{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"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":"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":"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":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AX8","name":"Test isolation","shortDescription":{"text":"Test isolation"},"helpUri":"https://codehealth.canine.dev/dimensions/AX8"},{"id":"AX9","name":"CQS / query purity","shortDescription":{"text":"CQS / query purity"},"helpUri":"https://codehealth.canine.dev/dimensions/AX9"},{"id":"AXB1","name":"Runtime evidence locked \u2014 no reproducible boot","shortDescription":{"text":"Runtime evidence locked \u2014 no reproducible boot"},"helpUri":"https://codehealth.canine.dev/dimensions/AXB1"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P10","name":"Library API \u0026 versioning","shortDescription":{"text":"Library API \u0026 versioning"},"helpUri":"https://codehealth.canine.dev/dimensions/P10"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P2","name":"Observability","shortDescription":{"text":"Observability"},"helpUri":"https://codehealth.canine.dev/dimensions/P2"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"PF1","name":"Benchmark discipline","shortDescription":{"text":"Benchmark discipline"},"helpUri":"https://codehealth.canine.dev/dimensions/PF1"},{"id":"PF2","name":"Allocation hygiene","shortDescription":{"text":"Allocation hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF2"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X32","name":"Type resolved by simple name across every loaded assembly","shortDescription":{"text":"Type resolved by simple name across every loaded assembly"},"helpUri":"https://codehealth.canine.dev/dimensions/X32"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU._locked_ordinality (cyclomatic 146): _CalendarICU._locked_ordinality has cyclomatic complexity 146 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"769120a6d0eb9eade1ce2b9e7b8850d67b41a9d6c93fd89e22a74ab29b7dc0b4"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian._ordinality (cyclomatic 143): _CalendarGregorian._ordinality has cyclomatic complexity 143 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d6631fd4198566f71c23882d3bfcf2d1edfec658246c6f0d49803b68d9aa17"}},{"ruleId":"D1","level":"warning","message":{"text":"UnicodeLookalikeTable.isLookalikeScalar (cyclomatic 136): UnicodeLookalikeTable.isLookalikeScalar has cyclomatic complexity 136 (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":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"802c239d672e189046fdeb11a33e9c73ec13bfe407deaeba50a2cdf91d1611bf"}},{"ruleId":"D1","level":"warning","message":{"text":"UnicodeLookalikeTable.allCharactersAllowedByTLDRules (cyclomatic 94): UnicodeLookalikeTable.allCharactersAllowedByTLDRules has cyclomatic complexity 94 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"32414ea10575bb3a3a0729e7406c601bf11bfa26499f8a98afbd26ba3ca9a12f"}},{"ruleId":"D1","level":"warning","message":{"text":"ISO8601FormatStyle.components (cyclomatic 79): ISO8601FormatStyle.components has cyclomatic complexity 79 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9d25e675081973b393d1f014879f5330ed220aeb99f85cfbd9d3ff116540d6"}},{"ruleId":"D1","level":"warning","message":{"text":"Decimal.__decimal (cyclomatic 70): Decimal.__decimal has cyclomatic complexity 70 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"73b1108123c10b92f8bd8be0a3871a9f21d09888f9df995144a6c2890076c57d"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.date (cyclomatic 68): _CalendarHebrew.date 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"16592e84f53f2a47ff77c7e9c2371d2b166f71f2e43b54c8e604a0acac240655"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.addAndWrap (cyclomatic 65): _CalendarGregorian.addAndWrap has cyclomatic complexity 65 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2526}}}],"partialFingerprints":{"codehealthFindingId/v1":"47972844e5596ecb411198bd207a89d89bca883d6976e87c2da8d085d0215b72"}},{"ruleId":"D1","level":"warning","message":{"text":"URL.encode (cyclomatic 64): URL.encode has cyclomatic complexity 64 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"814a8e0b137de98480f3e8c6a36760a6bd2a8f0f831f4cae11da486b3c353eae"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU._locked_dateInterval (cyclomatic 64): _CalendarICU._locked_dateInterval has cyclomatic complexity 64 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"0569be99635c2d79c28b9281c848f5684641843cbf0899f0427c99345e74fc70"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar._fastPathDateComponents (cyclomatic 63): Calendar._fastPathDateComponents has cyclomatic complexity 63 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"5febfdd716e17b9d265f876807d99786f0a735b4381a70ea5b196f0bf2a1ef31"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarChinese.date (cyclomatic 60): _CalendarChinese.date has cyclomatic complexity 60 (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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8499b3f6c450caced616bbaf5ce4c5f61ea2261cf094d8a5a847b455c75cbfd"}},{"ruleId":"D1","level":"warning","message":{"text":"_FileManagerImpl.contentsEqual (cyclomatic 59): _FileManagerImpl.contentsEqual has cyclomatic complexity 59 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3ad6439dfa2816e5a9d01aa071a803bc122b226e438d2d84766c15bca87b93"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian._dateComponents (cyclomatic 55): _CalendarGregorian._dateComponents has cyclomatic complexity 55 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5797e9b9415bb0ecf33dd4ddebdbc6a9b11cf697748f2935fadb948d88ce7b3"}},{"ruleId":"D1","level":"warning","message":{"text":"_StringCompareOptionsIterable._range (cyclomatic 54): _StringCompareOptionsIterable._range has cyclomatic complexity 54 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BComparison.swift"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee1e8e93aba49421287f515f4637caeb03e309f94796fed18f0e6ef19390694"}},{"ruleId":"D1","level":"warning","message":{"text":"_FileOperations.moveFile (cyclomatic 52): _FileOperations.moveFile has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"37865d3db4b90b64c70ffcc157be9a651f408afe9eca81a74b59fba8b891b9b3"}},{"ruleId":"D1","level":"warning","message":{"text":"_StringCompareOptionsIterable._compare (cyclomatic 52): _StringCompareOptionsIterable._compare has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BComparison.swift"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"799b5a86869ad49fc30c8bc74815bd6e8bf0d003eb0e6f47329329406e04d523"}},{"ruleId":"D1","level":"warning","message":{"text":"URL.parse (cyclomatic 52): URL.parse has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9fdf863251766791575e5fcb850db90918eff7d77c5f452445f87145f8f42fd"}},{"ruleId":"D1","level":"warning","message":{"text":"URL_Resolution.swift.resolveDotSegmentsInPlace (cyclomatic 52): URL_Resolution.swift.resolveDotSegmentsInPlace has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Resolution.swift"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb99fd3e4254a7af858efb99c63d84b342e59ba7a9a7fabdc494cfc1447f85e"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar.compare (cyclomatic 51): Calendar.compare has cyclomatic complexity 51 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"2546433ea9ca058d519a49a73f9136f95cf5de9117bdf755c877439e6848b780"}},{"ruleId":"D1","level":"warning","message":{"text":"Base64._decodeIgnoringErrors (cyclomatic 51): Base64._decodeIgnoringErrors has cyclomatic complexity 51 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"4505e243075267e9c237c9dbc36dd146f3c9927189a7b92510bfba5814e80a2e"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU._locked_start (cyclomatic 50): _CalendarICU._locked_start has cyclomatic complexity 50 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1382}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b7182a7dd6c67ee180a90cbd43b9866c473601e45ce491854cb800d28d8028b"}},{"ruleId":"D1","level":"warning","message":{"text":"Data\u002BWriting.swift.writeToFileAux (cyclomatic 48): Data\u002BWriting.swift.writeToFileAux has cyclomatic complexity 48 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"5501c573e0aa219f7028cd6eafcf57ef8943760cf8843dce9ee8d7d184f1f2a1"}},{"ruleId":"D1","level":"warning","message":{"text":"URL.parse (cyclomatic 45): URL.parse 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":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cff01417bebcdc72d5d22b36c3d4be78e5a1f0e1381f18e29bc53bbeaf99ff4"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.dateInterval (cyclomatic 41): _CalendarHebrew.dateInterval has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"b789917dd36f94e841a2166d46ca1bd6ad9c2e87d4feefa60e5ff50f94602d02"}},{"ruleId":"D1","level":"warning","message":{"text":"Data\u002BReading.swift.readBytesFromFile (cyclomatic 40): Data\u002BReading.swift.readBytesFromFile has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"acf94d088eecc18d4b86951be11cbf265777502ff0c14f9a90462d55b8a534fd"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar._adjustedDateForMismatchedLeapMonthOrDay (cyclomatic 39): Calendar._adjustedDateForMismatchedLeapMonthOrDay has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"731b8401c11fbc0a496d9b2d1dfa25c7a4f243f5221c076138cecae5191e05a4"}},{"ruleId":"D1","level":"warning","message":{"text":"_FileManagerImpl.createDirectory (cyclomatic 38): _FileManagerImpl.createDirectory has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ffa4383ab58b727cd186a8954f5d570f9edc58293f6c351b3bc10344818658"}},{"ruleId":"D1","level":"warning","message":{"text":"RFC3986Parser.parse (cyclomatic 38): RFC3986Parser.parse has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc5dbeda7f4e09c22a75fe22a770e07d64b2973d296bb5f36986138e3af2be3d"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.range (cyclomatic 37): _CalendarGregorian.range has cyclomatic complexity 37 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"031522b8bda218982d4c04e50d8f78ba33cc0a855d28d4b9eb2a39e4c022d218"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.add (cyclomatic 37): _CalendarGregorian.add 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"08f8ea8c5a6b58e08f6c38a926bc84b8a891e6d23f05c212b2fe35eb2e113328"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.nextMonthDayMatch (cyclomatic 37): _CalendarHebrew.nextMonthDayMatch 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e17ffe7d169d1c0fcbb4d7b642cf90ce2400144210185df15684e53ef8d9ea9"}},{"ruleId":"D1","level":"warning","message":{"text":"Value.dateValue (cyclomatic 35): Value.dateValue has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd6824760673378890925999d710c7278c0af2b2c0fabce1a50575c88021f1a"}},{"ruleId":"D1","level":"warning","message":{"text":"TimeZone.tryParseGMTName (cyclomatic 35): TimeZone.tryParseGMTName has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/TimeZone/TimeZone.swift"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"2492c0eb5dcb6ea160c1e0ae22379ddd40a0baab197511b225624f688c5163c8"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.minMaxRange (cyclomatic 34): _CalendarGregorian.minMaxRange has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"38bf4ebd132a5f79f22a2d1495395dbf492c459621424ff739b38ebcd17b49d7"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents.isValidDate (cyclomatic 34): DateComponents.isValidDate has cyclomatic complexity 34 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"8108c393575bde873655a740093c20428602fce75a2dba25be0adb159d093bcd"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents._validate (cyclomatic 34): DateComponents._validate has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"0445035a0d7398316e9f0b3f933db22411f2579b144ac4effeae3f5cb3f5654d"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU._locked_range (cyclomatic 34): _CalendarICU._locked_range has cyclomatic complexity 34 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db50f0c5649d5323898a843fee963f0d3a4e513416673daf7da2527b3f1f072"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarChinese.dateComponents (cyclomatic 33): _CalendarChinese.dateComponents has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"de5486cb7374ae943bcff299e177fe71ff4767783430a633628c3ba7eda29237"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.dateComponents (cyclomatic 33): _CalendarHebrew.dateComponents has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e3e3d33e60ccae8e0843b829487a3572cd861969557c4536e0530b9a32ec76"}},{"ruleId":"D1","level":"warning","message":{"text":"LocalePreferences.apply (cyclomatic 33): LocalePreferences.apply has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbde026aac0fc1f286e8cdda16561f1a12b3032eb8f8ef668840ce4fad8c4164"}},{"ruleId":"D1","level":"warning","message":{"text":"_FileOperations.removeFile (cyclomatic 31): _FileOperations.removeFile has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb74fc9d4955ef83d6f05a67223414c47bccce9a07c72c32caf48eb2db16da7"}},{"ruleId":"D1","level":"warning","message":{"text":"__DataStorage.ensureUniqueBufferReference (cyclomatic 31): __DataStorage.ensureUniqueBufferReference has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Representations/DataStorage.swift"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"08866b64458dfe782aff88a15bce7c778bd3aec278e48ee4220994c2304a8b08"}},{"ruleId":"D1","level":"warning","message":{"text":"AnchoredRelativeFormatStyle.bound (cyclomatic 31): AnchoredRelativeFormatStyle.bound has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BAnchoredRelativeFormatStyle.swift"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"887342b0426426c37e36246174867cdf1b538d33d00e738218644ecb9c1f3f11"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.isComponentsInSupportedRange (cyclomatic 30): _CalendarGregorian.isComponentsInSupportedRange 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1624}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a5086240dd9194cd31bf9eee79719ec97b0030711f5473a0c4fc3edecfbaba5"}},{"ruleId":"D1","level":"warning","message":{"text":"_FileOperations._linkOrCopyFile (cyclomatic 30): _FileOperations._linkOrCopyFile 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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":1114}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e83b9034c7e601bdccbde1e11a894de00f281d2d1cd83761695b640b101def9"}},{"ruleId":"D1","level":"warning","message":{"text":"String\u002BIO.swift.encodingFromDataForExtendedAttribute (cyclomatic 30): String\u002BIO.swift.encodingFromDataForExtendedAttribute has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae1c570b208a26c3b9a5eb885f8b0b946d2ad5412c2dc1801d842d9efc3485f8"}},{"ruleId":"D1","level":"warning","message":{"text":"String._unconditionallyBridgeFromObjectiveC (cyclomatic 30): String._unconditionallyBridgeFromObjectiveC 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":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"f583f9ab5552753753646fc8429c5f0eeba77d23875b07d54144772367a4c865"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.difference (cyclomatic 29): _CalendarGregorian.difference 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2986}}}],"partialFingerprints":{"codehealthFindingId/v1":"164255628d7d1667b25a9c7b832e546ee2595223377b0ea1d8152b8cfaa4993c"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.dateComponents (cyclomatic 29): _CalendarGregorian.dateComponents 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":3064}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf970f3f201751457316a3f792cb2f9dc83e0acd3b6c64b3de945de35b0156d"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar.dateAfterMatchingMonth (cyclomatic 28): Calendar.dateAfterMatchingMonth 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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1649}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cc1463884c64aa4c47d1493fc3732f637fa843d2cd8c1c8401c82ca0720732e"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarChinese.ordinality (cyclomatic 28): _CalendarChinese.ordinality 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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee2bf24350949185afca5356746dfe71ac5e98aab57e742488e7315fc486718"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgressFraction.== (cyclomatic 28): ProgressFraction.== 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":"Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"f099cd9cebb8a9e6ee8e45873459f3d07e8111f9e9305d66fc1a1d8f3d5837d4"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU._locked_setToFirstInstant (cyclomatic 28): _CalendarICU._locked_setToFirstInstant has cyclomatic complexity 28 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1743}}}],"partialFingerprints":{"codehealthFindingId/v1":"612416e932a793862dfd1daffce08c70a2fee33d492f32b9f36ef6363b20d3e5"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU._locked_add (cyclomatic 28): _CalendarICU._locked_add 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1904}}}],"partialFingerprints":{"codehealthFindingId/v1":"adfbb179b76ee89153aae564f9ea52f317372f79baa981ce49ca7ca0d99379a0"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar._adjustedDateForMismatches (cyclomatic 27): Calendar._adjustedDateForMismatches has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff898ea20bee68a97c13909a0c92f66eda54c79eb14f11a339fe8ff8ebf97544"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.supportsNextDateFastPath (cyclomatic 27): _CalendarHebrew.supportsNextDateFastPath has cyclomatic complexity 27 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"71908a436d545b4d4eb87525eefd38fc580b1305731265808b87392f6552eb5a"}},{"ruleId":"D1","level":"warning","message":{"text":"JSONDecoderImpl.unwrapFloatingPoint (cyclomatic 27): JSONDecoderImpl.unwrapFloatingPoint 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":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"837303cf98ece06daced4ee946f668a25e41d13fe8f887a67d245c49ec9a85c4"}},{"ruleId":"D1","level":"warning","message":{"text":"Value.parseSpecialRealValue (cyclomatic 27): Value.parseSpecialRealValue has cyclomatic complexity 27 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f785245cb96cca78442d37dca73e142e1503c5a4833d83f6c9140685ad2c8e3"}},{"ruleId":"D1","level":"warning","message":{"text":"Iterator.next (cyclomatic 27): Iterator.next 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":"Sources/FoundationEssentials/String/String\u002BEndianAdaptorSequence.swift"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac39cb9ed5f1317c18012aba9b39050bd1271b5356a7de9f116dc339555bf02c"}},{"ruleId":"D1","level":"warning","message":{"text":"RFC3986Parser.compatibilityParse (cyclomatic 27): RFC3986Parser.compatibilityParse 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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b563a6432ce7e1e777e7019a7a144c4452a01d1d0e98ab7ef9560f429130e45"}},{"ruleId":"D1","level":"warning","message":{"text":"_LocaleICU.weekendRange (cyclomatic 27): _LocaleICU.weekendRange 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":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":1224}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd8dd3d6636d2f738ba5090f2eb4c80a9328d2875fbc8019575846802acfea11"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.dateComponents (cyclomatic 26): _CalendarGregorian.dateComponents 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1982}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a220910ae975b36c0cd3155f4ae00cca8d281321a2d506d3234723dbbc71d4d"}},{"ruleId":"D1","level":"warning","message":{"text":"_ProcessInfo.operatingSystemVersionString (cyclomatic 26): _ProcessInfo.operatingSystemVersionString has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProcessInfo/ProcessInfo.swift"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc551274ecffaef649a4575b2cb6fcaf70cf4b83bdc4f44ad7d8fef8a1dc53db"}},{"ruleId":"D1","level":"warning","message":{"text":"BuiltInUnicodeScalarSet.appendBitmap (cyclomatic 26): BuiltInUnicodeScalarSet.appendBitmap 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":"Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"5821385e92f5a183342e45488c0f964226b2c7e1aa412b238d382b1f0fb83163"}},{"ruleId":"D1","level":"warning","message":{"text":"URL.schemeFlags (cyclomatic 26): URL.schemeFlags has cyclomatic complexity 26 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a58a9d7ec23f874a88711b2d4c3bd116812cb3d56e19ed042c3f01daecfa3bf"}},{"ruleId":"D1","level":"warning","message":{"text":"RFC3986Parser.parse (cyclomatic 26): RFC3986Parser.parse 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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c27d2336bc9aa63e4540cd0f3f1a3b02bd89b9370bd52b8e09794dbeeb2dc12"}},{"ruleId":"D1","level":"warning","message":{"text":"Duration.bound (cyclomatic 26): Duration.bound 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":"Sources/FoundationEssentials/UUID.swift"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b42de3a01b446d909bf04cc2d7d2be64ac31f4126ec1bf17476777d1b8e04f"}},{"ruleId":"D1","level":"warning","message":{"text":"BidirectionalCollection._getBlock (cyclomatic 26): BidirectionalCollection._getBlock 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":"Sources/FoundationEssentials/AttributedString/Collection Stdlib Defaults.swift"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f456e903e228214fad276c1394824f1fe46440d9b26392ed292c51c7e41bcea"}},{"ruleId":"D1","level":"warning","message":{"text":"UnsafeBufferPointer._decomposed (cyclomatic 26): UnsafeBufferPointer._decomposed 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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6544e0465bfcb9476e7b6508a6d7e4293f05e9038f29dfc7a429d7f9dd2fe9"}},{"ruleId":"D1","level":"warning","message":{"text":"String.init (cyclomatic 26): String.init 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":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c57f81bbc88e1aa08a0e9729d681a197f1746e86a3714a375df4f671e365e6"}},{"ruleId":"D1","level":"warning","message":{"text":"String.data (cyclomatic 26): String.data 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":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc19b0d8601af4363dae260ca6ad7e1c7f9a0cc879d9faa8d1f2c4da061756e"}},{"ruleId":"D1","level":"warning","message":{"text":"Date.daysBeforeMonth (cyclomatic 25): Date.daysBeforeMonth 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":"Sources/FoundationEssentials/Date.swift"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfccbae73e6b15d240b705c9948adbcc3fbf7666653edbfeb752ac1129f25211"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.dateInterval (cyclomatic 25): _CalendarGregorian.dateInterval has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"92459ff080d1ab937be3e4c35f14392645b91dbe5a5c60af6d40942c93000365"}},{"ruleId":"D1","level":"warning","message":{"text":"Decimal._addReportingInexact (cyclomatic 25): Decimal._addReportingInexact 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":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf7c9275278cf8a46aaebe0246bb4e6576a95479078c5b4139f2800ec902be2"}},{"ruleId":"D1","level":"warning","message":{"text":"_URLComponents._uncheckedString (cyclomatic 25): _URLComponents._uncheckedString has cyclomatic complexity 25 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb3ecc9bceacfd59f8bf4deeb4dae036168bb0d3685a17268b0395653071259"}},{"ruleId":"D1","level":"warning","message":{"text":"_URLInfo.originalString (cyclomatic 25): _URLInfo.originalString 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":"Sources/FoundationEssentials/URL/URL_Info.swift"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"714bffaced40eb3e507737eebe6a9dfe62129412a6eb5bcf109ac919091d0700"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar._adjustedDate (cyclomatic 24): Calendar._adjustedDate has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"b97577e0ddca6506f9f7f1b6c5ed3bd70f3687d2e7a83ff7891dba133ea820bd"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar._adjustedDateForMismatchedChineseLeapMonth (cyclomatic 24): Calendar._adjustedDateForMismatchedChineseLeapMonth has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f3d9081b39870b15ef1073b6fffed89b41ee996d1e0f618b414c248df9399a1"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents.== (cyclomatic 24): DateComponents.== has cyclomatic complexity 24 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"291531293b1fdbcf3b8591f711a296520575df12a08bb929589fdbb202a132fa"}},{"ruleId":"D1","level":"warning","message":{"text":"Decimal._compare (cyclomatic 24): Decimal._compare has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"e912b2434a1f34d4675f4db734409f2d78a28f50be03674b977ce3649edbf3a6"}},{"ruleId":"D1","level":"warning","message":{"text":"_FileOperations._copyDirectoryMetadata (cyclomatic 24): _FileOperations._copyDirectoryMetadata has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"efebaba57ffd85a5945aa287498f3a75133cee59da75e91f35312f1e1e137bca"}},{"ruleId":"D1","level":"warning","message":{"text":"BPlistScanner.parseTopLevelInfo (cyclomatic 24): BPlistScanner.parseTopLevelInfo 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":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"9db9733d2afde406a861afdbff69c1196e81ad45c21a300f17813f873b8d5f8b"}},{"ruleId":"D1","level":"warning","message":{"text":"State.findCurrentTimeZone (cyclomatic 24): State.findCurrentTimeZone has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/TimeZone/TimeZone_Cache.swift"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f374fc496ed4167facc81508e00dc3ea9b1146e25127208088d35baa43def36"}},{"ruleId":"D1","level":"warning","message":{"text":"_SwiftURL.appending (cyclomatic 24): _SwiftURL.appending 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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"012ea566dc41a70e96f6ded53663087c5f984cd4f4a98aa6384ce282b1eb5df4"}},{"ruleId":"D1","level":"warning","message":{"text":"_SwiftURL.fillCFURLImpl (cyclomatic 24): _SwiftURL.fillCFURLImpl 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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":1242}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5fa79832966ee4b65e191af4459caa20df8917d28a4f1b3ee6aec21cccbdd8e"}},{"ruleId":"D1","level":"warning","message":{"text":"UTF8Span._decomposed (cyclomatic 24): UTF8Span._decomposed has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bc232a406d3b06d40a571408c3eb1a4ecad3b70250545911dbf5ad1a0522b18"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar._unadjustedDates (cyclomatic 23): Calendar._unadjustedDates has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"5138977e6ac5f386dc9cbf602b0574ff0afdc3d8695582715ed15e8d2cfa6ad2"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.nextMonthWeekdayWeekOfMonthMatch (cyclomatic 23): _CalendarHebrew.nextMonthWeekdayWeekOfMonthMatch has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1293}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b1ac6f30af8c224460ea0a2178cc9801aabc51a29581a279270c3d126efd51a"}},{"ruleId":"D1","level":"warning","message":{"text":"XMLPlistScanner.readTag (cyclomatic 23): XMLPlistScanner.readTag has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d96fe4c50724600e29428082934e1afd50bb911683c751fd88477be1bd0e36"}},{"ruleId":"D1","level":"warning","message":{"text":"BuiltInUnicodeScalarSet.contains (cyclomatic 23): BuiltInUnicodeScalarSet.contains has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: BuiltInUnicodeScalarSet._bitmapTableIndex (cyclomatic 26) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"c168c4a7a30658041dbe07157b045940f0f437014310efb5f639fbe8bc5ae157"}},{"ruleId":"D1","level":"warning","message":{"text":"_TimeZoneICUResource.init (cyclomatic 23): _TimeZoneICUResource.init 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":"Sources/FoundationInternationalization/TimeZone/TimeZone_ICUResource.swift"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"f42fe955c543e7f54bf80493ae656e91763cc89a2fe428394c02b17b5677f586"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolvedDateComponents.init (cyclomatic 22): ResolvedDateComponents.init has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b77850c4bd7a5829cc08c01f29a0745dc011d85b85cc3eb3c9387f4b31fcae2"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian._firstInstant (cyclomatic 22): _CalendarGregorian._firstInstant has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":742}}}],"partialFingerprints":{"codehealthFindingId/v1":"03de83eeb76eb04bf318727afd6a8856bca79a0f3e4ab86673c6be7046842e07"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.nextMonthWeekdayOrdinalMatch (cyclomatic 22): _CalendarHebrew.nextMonthWeekdayOrdinalMatch 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdc80d67c7b743fa30cc7a30477b9af7e2ff13c329d507eb1a81d78378dba476"}},{"ruleId":"D1","level":"warning","message":{"text":"Decimal.== (cyclomatic 22): Decimal.== has cyclomatic complexity 22 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"571e905632b152fc21ed35cc20f57816934a5332bf4208e5d5a41e6c363df021"}},{"ruleId":"D1","level":"warning","message":{"text":"Locale.identifier (cyclomatic 22): Locale.identifier has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale.swift"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cdf3ab812d1824443254055a85c6c5c2cb88651c2ef1b506e9dab3de05282d9"}},{"ruleId":"D1","level":"warning","message":{"text":"_URL.init (cyclomatic 22): _URL.init 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":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"0740e7a231428e8e7c383dcfea356570e26d9eaff9cb1ad9e3cf6852cd6c9192"}},{"ruleId":"D1","level":"warning","message":{"text":"_SwiftURL._makeCFURL (cyclomatic 22): _SwiftURL._makeCFURL has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":1106}}}],"partialFingerprints":{"codehealthFindingId/v1":"e28b9341f9283d1f1a95cfc18105ef2a7f40f60c0d34449d642dc3685b8be7e5"}},{"ruleId":"D1","level":"warning","message":{"text":"Span.containsInvalidPathExtensionScalar (cyclomatic 22): Span.containsInvalidPathExtensionScalar 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":"Sources/FoundationEssentials/Span\u002BUtils.swift"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"c722185c0e3b8f51cf6da8cb68a2d3a18396f09939f30a05b3af3bd87c691206"}},{"ruleId":"D1","level":"warning","message":{"text":"Guts.enforceAttributeConstraintsAfterMutation (cyclomatic 22): Guts.enforceAttributeConstraintsAfterMutation 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":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"10857f19faf732f74683111b390a0982f128884af01d8e1548d8f8564f73f436"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU.dateComponents (cyclomatic 22): _CalendarICU.dateComponents has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1209}}}],"partialFingerprints":{"codehealthFindingId/v1":"64e06597970827b05f1580c089d9c8b2f284498be63ce34252902e2faf398393"}},{"ruleId":"D1","level":"warning","message":{"text":"Attributed._format (cyclomatic 22): Attributed._format 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":"Sources/FoundationInternationalization/Formatting/ByteCountFormatStyle.swift"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7ca1c567dbc072bfaf046289728589982dc0a2d598b66465b7e6886da8929fc"}},{"ruleId":"D1","level":"warning","message":{"text":"Signature.createNumberFormatter (cyclomatic 22): Signature.createNumberFormatter 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":"Sources/FoundationInternationalization/Formatting/Number/ICULegacyNumberFormatter.swift"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"48256b0bbb0bacd15e4f5412688c2cab2460b17e8c570c119aef87d882687134"}},{"ruleId":"D1","level":"warning","message":{"text":"Storage.append (cyclomatic 21): Storage.append 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":"Sources/FoundationEssentials/IndexPath.swift"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"1011e22d72b9f0d398b17141b40273da02f387ffe881cece3029746f7669c03c"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarChinese.range (cyclomatic 21): _CalendarChinese.range 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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c02fd749e8507e049ceb12db9f869cd2186680d5f417a3447902216d9db3c71"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarChinese.date (cyclomatic 21): _CalendarChinese.date has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"371853efaf409e3ed209f7430dd2b9c2b8f5b797d54dc80dfd96c237f56ccb57"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.ordinality (cyclomatic 21): _CalendarHebrew.ordinality 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"49b4c49e0da44b06052c94eb7431f078939cf731bb77debbe5c4fb96b92fe6a4"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents._bridgeToObjectiveC (cyclomatic 21): DateComponents._bridgeToObjectiveC has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents._conditionallyBridgeFromObjectiveC) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5169276ba701dd4267d1a997c59399eea8ea894631f503505bb8fa05c64898f"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents._conditionallyBridgeFromObjectiveC (cyclomatic 21): DateComponents._conditionallyBridgeFromObjectiveC has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents._bridgeToObjectiveC) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":747}}}],"partialFingerprints":{"codehealthFindingId/v1":"84056ef1dc0e658919442953d3792f1083fb0193ac85bd53552dbdc97e716ee7"}},{"ruleId":"D1","level":"warning","message":{"text":"XMLPlistScanner.parseString (cyclomatic 21): XMLPlistScanner.parseString 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":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"a987addd27ab8d4fdaba9c22cbed89998d355961e07f08ad55b0b39334d10c5b"}},{"ruleId":"D1","level":"warning","message":{"text":"_URL.windowsFilePath (cyclomatic 21): _URL.windowsFilePath 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":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d264862a705a9bca3c363978a373df47cef1926d14b8867af3902037caa525d"}},{"ruleId":"D1","level":"warning","message":{"text":"BidirectionalCollection._matchesSeparators (cyclomatic 21): BidirectionalCollection._matchesSeparators 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":"Sources/FoundationEssentials/AttributedString/Collection Stdlib Defaults.swift"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb53acae6bfecc8187f65321b8e9a8aee59b3f7a2df07678af9a26d1598fff8f"}},{"ruleId":"D1","level":"warning","message":{"text":"Data\u002BWriting.swift.createTemporaryFile (cyclomatic 21): Data\u002BWriting.swift.createTemporaryFile 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":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae61c9453827ba993d860751b1a072b4d43c18e6cb759b557a3e6b5fd16da8c5"}},{"ruleId":"D1","level":"warning","message":{"text":"_LocaleICU.init (cyclomatic 21): _LocaleICU.init has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c03d209dbf38e3703707be4a14fa382dca69ea379e53508613bca98e3cfab7b"}},{"ruleId":"D1","level":"warning","message":{"text":"ComponentSet.set (cyclomatic 20): ComponentSet.set has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"10825454413545dfe2d6174914862927136dc7dcd3a655bdb07b1ef3d2ca501d"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.nextWeekdayOrdinalMatch (cyclomatic 20): _CalendarHebrew.nextWeekdayOrdinalMatch 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1240}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d944c847dfa401c7e30c048e5c58282494e6d830dfb13d0f91b1ac42d62b96"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents.customMirror (cyclomatic 20): DateComponents.customMirror 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"91aad65330ecb2b838a2e218e0fabcd661228b418f3c8b2a9ab6bada621814e7"}},{"ruleId":"D1","level":"warning","message":{"text":"Base64._encodeWithLineBreaks (cyclomatic 20): Base64._encodeWithLineBreaks 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":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89cacb8fff57c10124ac0e2eb4d9fabcc6c8314a008ae720489737c6a481717"}},{"ruleId":"D1","level":"warning","message":{"text":"Base64._decode (cyclomatic 20): Base64._decode 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":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"50f6b97486cd02e9c33c11e9cb8debc9d1927b9b1149ea8960986624143d50fb"}},{"ruleId":"D1","level":"warning","message":{"text":"Decimal.init (cyclomatic 20): Decimal.init 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":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7c58f9c1b44a70152d9e79639032514b69b55d95a1e5c95309bc45760e2959"}},{"ruleId":"D1","level":"warning","message":{"text":"_FileOperations._copyRegularFile (cyclomatic 20): _FileOperations._copyRegularFile 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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"55f5b7eef1b37b79804d827bbbd4f6043ab1f58787d91f5e94fc35b537a5834a"}},{"ruleId":"D1","level":"warning","message":{"text":"_URLComponents.computedString (cyclomatic 20): _URLComponents.computedString has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: _URLComponents.rangeOf (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"588afe3ef11569a9a14b25f926597786dc67ceda8ff3cf102ece67d6549b1231"}},{"ruleId":"D1","level":"warning","message":{"text":"RFC3986Parser.compatibilityParse (cyclomatic 20): RFC3986Parser.compatibilityParse 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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"41d64d24f1f601296ef80621702e0413765650732bff1e59302ececf5ab0924a"}},{"ruleId":"D1","level":"warning","message":{"text":"_URL.deletingLastPathComponent (cyclomatic 20): _URL.deletingLastPathComponent 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":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"0375eb6297cf98521f2a0f75cf47879898b020f43b329394db93eb9c9d309ed0"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU.date (cyclomatic 20): _CalendarICU.date 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e0ab1d6aaabc8f8f5bdd9de196ffd822b5b01f6a204b82046d0e82a497e17be"}},{"ruleId":"D1","level":"warning","message":{"text":"ListFormatterImpl.format (cyclomatic 20): ListFormatterImpl.format 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":"Sources/FoundationInternationalization/Formatting/ListFormatterImpl.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"23999381ad9a0a53abe6d08c90b6ba2b2ee0b2d0d68fa9f38f19e82449df0034"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar_ObjC.swift._fromNSCalendarUnits (cyclomatic 20): Calendar_ObjC.swift._fromNSCalendarUnits has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Calendar_ObjC.swift._fromNSCalendarUnit (cyclomatic 21) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7edb08f971bc6da65b428522dc9337736b3528b20a85f06453954a3374a2dad"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.julianDay (cyclomatic 19): _CalendarGregorian.julianDay has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: _CalendarGregorian.maximumRange (cyclomatic 20) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1715}}}],"partialFingerprints":{"codehealthFindingId/v1":"976692479ff60ebf9298c7c7b03a539212c1ea1fd9906588bc2094820d95f5a2"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.date (cyclomatic 19): _CalendarHebrew.date has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a5af57ede4a9635563edc08d945e060700a17d51789a789186bba5646fe8c3"}},{"ruleId":"D1","level":"warning","message":{"text":"BufferViewIterator.digits (cyclomatic 19): BufferViewIterator.digits 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":"Sources/FoundationEssentials/JSON/BufferViewIterator.swift"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"e662681b5a5759c9f36f8cc95a77eaaac3e595f5ba4bed40b1072d2af65958ac"}},{"ruleId":"D1","level":"warning","message":{"text":"LocalePreferences.apply (cyclomatic 19): LocalePreferences.apply has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8e1a3e088ca3e3da95ab553fadd572d11db529ae0b172e4390012c3e8f521de"}},{"ruleId":"D1","level":"warning","message":{"text":"URLEncoder.percentDecode (cyclomatic 19): URLEncoder.percentDecode 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":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad68f6cf6fc4f8f18b8a6ff6a39a890130d800d442b5c81f1bc9ff38d16cd2a2"}},{"ruleId":"D1","level":"warning","message":{"text":"_URL.appending (cyclomatic 19): _URL.appending has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":941}}}],"partialFingerprints":{"codehealthFindingId/v1":"64cd55cb6ede55575942f6ad75e1afafde4633c4728051201ed3bb81440dcd0c"}},{"ruleId":"D1","level":"warning","message":{"text":"_SwiftURL.init (cyclomatic 19): _SwiftURL.init 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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a0376eb7c897ba92631e31df0d8d7c7f722d5206b808fec3056da4de1987b6"}},{"ruleId":"D1","level":"warning","message":{"text":"Components.init (cyclomatic 19): Components.init 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":"Sources/FoundationEssentials/Locale/Locale\u002BComponents.swift"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1c5de2a31be3bb8b02b8cfd732270c66efdc99d2860e15de712691abccd95a"}},{"ruleId":"D1","level":"warning","message":{"text":"OpenStepPlist.swift.getDataBytes (cyclomatic 19): OpenStepPlist.swift.getDataBytes 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":"Sources/FoundationEssentials/PropertyList/OpenStepPlist.swift"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"39eac8abe229bcbea399e1256f4fd8446635e100b2b96fa7291eb5f1dee5cea8"}},{"ruleId":"D1","level":"warning","message":{"text":"URL_C\u002BFile.swift.posixLikePath (cyclomatic 19): URL_C\u002BFile.swift.posixLikePath 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":"Sources/FoundationEssentials/URL/URL_C\u002BFile.swift"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5413cbb13598de3a3df8e5d80ae41d47e2dc84609565bffbb2e9b3cc3124783"}},{"ruleId":"D1","level":"warning","message":{"text":"_TimeZoneICUResource.binarySearchTransition (cyclomatic 19): _TimeZoneICUResource.binarySearchTransition 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":"Sources/FoundationInternationalization/TimeZone/TimeZone_ICUResource.swift"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8004cacefbd64dac57ab18498ae257befdbbec6ee20e0cec5e27de00a6b55fe"}},{"ruleId":"D1","level":"warning","message":{"text":"build-list-format-data-impl.swift.pack (cyclomatic 19): build-list-format-data-impl.swift.pack has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"utils/build-list-format-data-impl.swift"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"164830f8e1e83fc53e694dbe6af86433593cb761b4a84ae65a9d59538f1669ee"}},{"ruleId":"D1","level":"warning","message":{"text":"AttributedString.init (cyclomatic 18): AttributedString.init 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":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"e90933ce364d4a467be9b5bd1956a33ab097c9f40e59a792b1ca4eeed724c51a"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar.dateAfterMatchingWeekOfMonth (cyclomatic 18): Calendar.dateAfterMatchingWeekOfMonth has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1751}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e46cac7ba924da0f562c6b599b4447668a9c45491ad6fa3aeb9fac266b2b99"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar.dateAfterMatchingWeekdayOrdinal (cyclomatic 18): Calendar.dateAfterMatchingWeekdayOrdinal has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1849}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d5d869d938e011aec27af59c0c2af5d98db5ef2daa8b1ac38c9464acd1779e7"}},{"ruleId":"D1","level":"warning","message":{"text":"ComponentSet.highestSetUnit (cyclomatic 18): ComponentSet.highestSetUnit has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"8da6917bc1c14a8c0caaa6661523a5a158900f711ffab8893c694e83ed7a6c2f"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.date (cyclomatic 18): _CalendarGregorian.date has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: _CalendarGregorian.maximumRange (cyclomatic 20) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2840}}}],"partialFingerprints":{"codehealthFindingId/v1":"5372d08c88b7c8c781c63f612efb64bc2917fa08b7612c62dd99b4ee3294e7e5"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarGregorian.date (cyclomatic 18): _CalendarGregorian.date has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: _CalendarGregorian.maximumRange (cyclomatic 20) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2906}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfaa4635ddd314b67374924c4d0b902431aff3dedab35f3a8a05fbfa724c0d27"}},{"ruleId":"D1","level":"warning","message":{"text":"JSON5Scanner.validateNumber (cyclomatic 18): JSON5Scanner.validateNumber 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"a72423ff67fb2c5183e88c4ce173a0a1315f51e2ea8f4d7e027f7e18776ea08f"}},{"ruleId":"D1","level":"warning","message":{"text":"JSONDecoder.withUTF8Representation (cyclomatic 18): JSONDecoder.withUTF8Representation 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":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bbc3ea5cd20bd740b715647bb53b9e2dcb1b9c3474f51293a9bdb915acbec6b"}},{"ruleId":"D1","level":"warning","message":{"text":"URLEncoder.percentDecode (cyclomatic 18): URLEncoder.percentDecode 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":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a0a834c5807aea3b3f105767c6ddf1359a7573ec63c149e9b183838f97e05a5"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU.easyMinMaxRange (cyclomatic 18): _CalendarICU.easyMinMaxRange 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9e3d219751fd3cd424f736ae9c3a242911f4898843ca22f7a8981e03b98a67"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU.date (cyclomatic 18): _CalendarICU.date 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef94b223842132b37e7a6eff27d4428944a414ff4eba37f820ef27904f828f53"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarICU.dateComponents (cyclomatic 18): _CalendarICU.dateComponents 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1311}}}],"partialFingerprints":{"codehealthFindingId/v1":"93af8e5d4ddf7f8f301107faae8907045a22b25e192b07c4b4958b2f3ba9148e"}},{"ruleId":"D1","level":"warning","message":{"text":"_LocaleICU.pref (cyclomatic 18): _LocaleICU.pref 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":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d293425d91f56f71842f8b5a196e01d3502f8f343b32bfc6386e101dc80a01e"}},{"ruleId":"D1","level":"warning","message":{"text":"_TimeZoneSingleDSTRule.startDateForRuleInYear (cyclomatic 18): _TimeZoneSingleDSTRule.startDateForRuleInYear 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":"Sources/FoundationInternationalization/TimeZone/TimeZone_SingleDSTRule.swift"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcbfa8f5a86967ca210fdcc945fd0c2c74ec332123bcb58ff8a21530a9b62f2e"}},{"ruleId":"D1","level":"warning","message":{"text":"RuleComponents.init (cyclomatic 18): RuleComponents.init 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":"Sources/FoundationInternationalization/TimeZone/TimeZone_SingleDSTRule.swift"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"61bf2807aaf198ab3151ef20c9f8ebd55fec747e7c63a2d41eb0163c0e61e7f2"}},{"ruleId":"D1","level":"warning","message":{"text":"UnitsFormatStyle.interval (cyclomatic 18): UnitsFormatStyle.interval 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":"Sources/FoundationInternationalization/Formatting/Duration\u002BUnitsFormatStyle.swift"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc4ba122620272070200744b9c9a4fd28e8b78edf34a0b50af997ffa5b8e50a"}},{"ruleId":"D1","level":"warning","message":{"text":"DateFieldCollection.updateSchedule (cyclomatic 18): DateFieldCollection.updateSchedule 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":"Sources/FoundationInternationalization/Formatting/Date/ICUDateFormatter.swift"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"514bded15d77b65bed1c5fdd3bd193a035a9e5a305040bf746f2a2263537d4e6"}},{"ruleId":"D1","level":"warning","message":{"text":"Calendar._matchingDate (cyclomatic 17): Calendar._matchingDate has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15badfa62aa26b35713b0590d306d730f089fcc46bfc753d6f663a8eb27a74c"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarChinese.dateInterval (cyclomatic 17): _CalendarChinese.dateInterval has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: _CalendarChinese.minimumRange (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"351309410f89d8740e352fa793be65c29fded52ed363551f1ca6d886bb14a6db"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents.setUnits (cyclomatic 17): DateComponents.setUnits has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents.mismatchedUnits) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a34fa42237deba978a5a47ddf051f2ad41a473a501c28fdb54065a355d679db"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents.mismatchedUnits (cyclomatic 17): DateComponents.mismatchedUnits has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents.setUnits) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c52ba26e056e07b882fe1a245b3775707b2e3fd287205d4e5e6366e77899ce4"}},{"ruleId":"D1","level":"warning","message":{"text":"Decimal._toString (cyclomatic 17): Decimal._toString has cyclomatic complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd9c7202eec19a36d58d35de02829471019813d50456b406b90cf06a97b57f5"}},{"ruleId":"D1","level":"warning","message":{"text":"Iterator.next (cyclomatic 17): Iterator.next 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":"Sources/FoundationEssentials/FileManager/FileOperations\u002BEnumeration.swift"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"e64af35b29fcdb181f7d143e1b1a3177690022dc847e4f70bef69e64799ecf80"}},{"ruleId":"D1","level":"warning","message":{"text":"JSON5Scanner.prevalidateJSONNumber (cyclomatic 17): JSON5Scanner.prevalidateJSONNumber has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"19c8e7593fa080a9f0c84a1833aa413c4522c6ef3fd36545bd0bc1f25d783d31"}},{"ruleId":"D1","level":"warning","message":{"text":"Iterator.next (cyclomatic 17): Iterator.next 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":"Sources/FoundationEssentials/String/String\u002BEndianAdaptorSequence.swift"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"49aba35b56d41be7110bcb3e0c4956b8026a090e269b0a0bbb181f5e7df42661"}},{"ruleId":"D1","level":"warning","message":{"text":"_SwiftURL.absoluteString (cyclomatic 17): _SwiftURL.absoluteString 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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"288ec23b15c75c88915eac99f11e41c8df019212bea504c991aa5d20612850ea"}},{"ruleId":"D1","level":"warning","message":{"text":"Span.pathExtensionDotIndex (cyclomatic 17): Span.pathExtensionDotIndex has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Span\u002BUtils.swift"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"4302015606e974eb600d825d79a38ea77e272849ffe79f15fe3f01d43abe1110"}},{"ruleId":"D1","level":"warning","message":{"text":"NSCalendar._newCalendarWithIdentifier (cyclomatic 17): NSCalendar._newCalendarWithIdentifier has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Calendar._toNSCalendarIdentifier (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"60468dccb58d522c429f7a65ef81165cc6fbddc38c4dcd0578877ab2c55763f2"}},{"ruleId":"D1","level":"warning","message":{"text":"_TimeZoneSingleDSTRule._gmtOffset (cyclomatic 17): _TimeZoneSingleDSTRule._gmtOffset has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_SingleDSTRule.swift"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"55f6e2b2a4356f08a9c384e5fd48679f6932935c86bbd714d28aca915135fc01"}},{"ruleId":"D1","level":"warning","message":{"text":"PredicateQueryRewriter._processFunction (cyclomatic 17): PredicateQueryRewriter._processFunction has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: PredicateQueryRewriter.visit (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"7deabdaffd43d12e017747060a4049dee08c3fd8d039dd0dd35d593494bd80d7"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarChinese.orderedDifferenceComponents (cyclomatic 16): _CalendarChinese.orderedDifferenceComponents has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: _CalendarChinese.minimumRange (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a1bad1891ad7d76af8bacb8c93e054c8b8f41f7dc1fef6d96952aa50142a3f"}},{"ruleId":"D1","level":"warning","message":{"text":"_CalendarHebrew.orderedDiffComponents (cyclomatic 16): _CalendarHebrew.orderedDiffComponents has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: _CalendarHebrew.minimumRange (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"12cc32194884d94d51fde6de27f4d4a6997e24a0f53799f0df6af3c2419b1bc3"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents.highestSetUnit (cyclomatic 16): DateComponents.highestSetUnit has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents.lowestSetUnit) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared. This is NOT this file\u0027s highest cyclomatic complexity: DateComponents.setValue (cyclomatic 17) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70c8ea9a688a431cc7ab76b0eed413a7c5b4e1abd0ed348c99b7a8bca765918"}},{"ruleId":"D1","level":"warning","message":{"text":"DateComponents.lowestSetUnit (cyclomatic 16): DateComponents.lowestSetUnit has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents.highestSetUnit) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared. This is NOT this file\u0027s highest cyclomatic complexity: DateComponents.setValue (cyclomatic 17) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ea292e86affc2f33d376cf789b7219663c48580ee0ee3de440b131e41699fa"}},{"ruleId":"D1","level":"warning","message":{"text":"JSONDecoderImpl.unwrapDecimal (cyclomatic 16): JSONDecoderImpl.unwrapDecimal 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":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1af9d103cd2177ebf35a8a613f353c969d1b2de6685b476f547b71bb736171f"}},{"ruleId":"D1","level":"warning","message":{"text":"__JSONEncoder._asDirectArrayEncodable (cyclomatic 16): __JSONEncoder._asDirectArrayEncodable 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":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b4e7b1670d7efc2dbcf047b3a8bf5af045ed18ec9741a00e7f40323c3b413b"}},{"ruleId":"D1","level":"warning","message":{"text":"Reference.== (cyclomatic 16): Reference.== 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":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"e59567a70c82b1bf434cbf87f6c30bb5096c20e282abc476f7dba22f2d3c4d91"}},{"ruleId":"D1","level":"warning","message":{"text":"JSONScanner.validateNumber (cyclomatic 16): JSONScanner.validateNumber 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: JSONError.debugDescription (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"942fdff7c40856b65e32ffed83a5e083a1de27d234487a9b653e887050658ccf"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgressFraction._math (cyclomatic 16): ProgressFraction._math 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":"Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea75c626a8a34d70cf42f400d4bbcf526829c50442a94b7286766fdc41aeeb1e"}},{"ruleId":"D1","level":"warning","message":{"text":"XMLPlistScanner.parseEntityReference (cyclomatic 16): XMLPlistScanner.parseEntityReference 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":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1279}}}],"partialFingerprints":{"codehealthFindingId/v1":"34142bdc51bf3abf3b73468ad1e33bfa582e92bb2b457b5c85cbebe113e3aa98"}},{"ruleId":"D1","level":"warning","message":{"text":"Data\u002BReading.swift.readBytesFromFileDescriptor (cyclomatic 16): Data\u002BReading.swift.readBytesFromFileDescriptor 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":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa23e6632ebc260a60b3c76df56f8350b835a4e449653341b8fc0324cb66801b"}},{"ruleId":"D1","level":"warning","message":{"text":"Data\u002BWriting.swift.writeToFileNoAux (cyclomatic 16): Data\u002BWriting.swift.writeToFileNoAux 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":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"9000af2be5fcbbee0a66404c2567e440bcb35455e93b855188ac3652e8e4c6de"}},{"ruleId":"D1","level":"warning","message":{"text":"String.withNTPathRepresentation (cyclomatic 16): String.withNTPathRepresentation 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":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"185b1efce51f2e6c39f7e3a6e0e589151c411c45dfca5a79c217cabb9a33c243"}},{"ruleId":"D1","level":"warning","message":{"text":"String.withContiguousNFCAndOutputBuffer (cyclomatic 16): String.withContiguousNFCAndOutputBuffer 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":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab96648038016af7689e63594d3140f08839c6dbf73d3b89fe99ff26ef8f926"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU._locked_ordinality (cognitive 253): _CalendarICU._locked_ordinality has cognitive complexity 253 (threshold 15). Drivers by points: if/else 74 (194 pts), loops 9 (28 pts), match/switch 11 (21 pts), ternaries 3 (10 pts) (nesting depth added 156). 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b7d4d615ee9a28b404d71710d64c396f222d2b8ebc691155cae54462b31d2d"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian._ordinality (cognitive 240): _CalendarGregorian._ordinality has cognitive complexity 240 (threshold 15). Drivers by points: if/else 72 (196 pts), match/switch 11 (21 pts), loops 3 (10 pts), ternaries 3 (10 pts), boolean chains 3 (nesting depth added 148). 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"9718fef59c4a32cc9a4031131eafe4a680a1252c37d9bcfedbf5ae3062ed9c16"}},{"ruleId":"D2","level":"warning","message":{"text":"ISO8601FormatStyle.components (cognitive 162): ISO8601FormatStyle.components has cognitive complexity 162 (threshold 15). Drivers by points: if/else 52 (110 pts), boolean chains 28, ternaries 7 (19 pts), match/switch 2 (5 pts) (nesting depth added 73). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"9651e578aa6df93fc1e1bbcab46ec7c6c27ff39991da12721dea70cec27c9b8d"}},{"ruleId":"D2","level":"warning","message":{"text":"_StringCompareOptionsIterable._range (cognitive 133): _StringCompareOptionsIterable._range has cognitive complexity 133 (threshold 15). Drivers by points: if/else 37 (107 pts), boolean chains 16, loops 3 (7 pts), ternaries 2 (3 pts) (nesting depth added 75). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BComparison.swift"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"d756cd3464fb132561bdfb6819c83394d54bea0fccf91f29492d099c39ab6c29"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileOperations.moveFile (cognitive 130): _FileOperations.moveFile has cognitive complexity 130 (threshold 15). Drivers by points: if/else 41 (104 pts), boolean chains 9, error handling 3 (9 pts), loops 2 (8 pts) (nesting depth added 75). 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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"b725a8beb8c3fc255ec8b7194b7d5dab15ebf1f63414d9a07d1a8dbd28548781"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._adjustedDateForMismatchedLeapMonthOrDay (cognitive 126): Calendar._adjustedDateForMismatchedLeapMonthOrDay has cognitive complexity 126 (threshold 15). Drivers by points: if/else 38 (106 pts), ternaries 2 (11 pts), boolean chains 9 (nesting depth added 77). 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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f682b32f4aa51e92ec1bfefdf25035a30f3f7acee1f3b4c5125ecce64c6756"}},{"ruleId":"D2","level":"warning","message":{"text":"Decimal.__decimal (cognitive 123): Decimal.__decimal has cognitive complexity 123 (threshold 15). Drivers by points: if/else 37 (72 pts), boolean chains 17, loops 8 (15 pts), ternaries 5 (14 pts), error handling 4 (5 pts) (nesting depth added 52). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e86bda3bf9a44588eaebfdb426037b43f4070f5f9bb70d082255fafffaf0a7"}},{"ruleId":"D2","level":"warning","message":{"text":"URL.encode (cognitive 114): URL.encode has cognitive complexity 114 (threshold 15). Drivers by points: if/else 58 (97 pts), boolean chains 11, loops 2 (6 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":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"90e3729808cec6fa58eedff8208c04c903722c9c5d91dd1079ebd9116f2c1caf"}},{"ruleId":"D2","level":"warning","message":{"text":"_StringCompareOptionsIterable._compare (cognitive 113): _StringCompareOptionsIterable._compare has cognitive complexity 113 (threshold 15). Drivers by points: if/else 32 (87 pts), boolean chains 20, loops 2 (5 pts), ternaries 1 (nesting depth added 58). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BComparison.swift"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"408c578dbc10295769fa987f5ac3599bdf7eeddeef48eb26cda81b7850c62ea1"}},{"ruleId":"D2","level":"warning","message":{"text":"URL.parse (cognitive 112): URL.parse has cognitive complexity 112 (threshold 15). Drivers by points: if/else 45 (100 pts), loops 2 (7 pts), boolean chains 5 (nesting depth added 60). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"600469fbaaab683dcfe5e31dd9929a478278291728691cfdf3bcb6bf63e4981c"}},{"ruleId":"D2","level":"warning","message":{"text":"Base64._decodeIgnoringErrors (cognitive 109): Base64._decodeIgnoringErrors has cognitive complexity 109 (threshold 15). Drivers by points: if/else 42 (92 pts), boolean chains 11, loops 3 (6 pts) (nesting depth added 53). 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":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab1dc3d52ea6e74daae9d31adc1d1770bd795768a744de2fe041f534a81558d"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian._dateComponents (cognitive 103): _CalendarGregorian._dateComponents has cognitive complexity 103 (threshold 15). Drivers by points: if/else 34 (64 pts), ternaries 24 (35 pts), boolean chains 4 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"06ba277f976633a76b215346a4912325cfeeb8f5ce8e6d122fa1767bf690dbea"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.date (cognitive 97): _CalendarHebrew.date has cognitive complexity 97 (threshold 15). Drivers by points: if/else 36 (57 pts), boolean chains 28, loops 4 (12 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"f865f37daa1d3917bacee38839be941638b1a8da989ca4dd5069185eda3b569c"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileManagerImpl.contentsEqual (cognitive 96): _FileManagerImpl.contentsEqual has cognitive complexity 96 (threshold 15). Drivers by points: if/else 41 (74 pts), boolean chains 14, loops 4 (8 pts) (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":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ff079e1e266a0f1b3f6465d4d9a99fc9f20504de17962e99c3a54f2895ca5e"}},{"ruleId":"D2","level":"warning","message":{"text":"URL_Resolution.swift.resolveDotSegmentsInPlace (cognitive 96): URL_Resolution.swift.resolveDotSegmentsInPlace has cognitive complexity 96 (threshold 15). Drivers by points: if/else 43 (81 pts), boolean chains 11, match/switch 2 (3 pts), loops 1 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Resolution.swift"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a1c535d3f8e6cead5255e614584076fcc0ab8e51340124805fefee5bbd8df3"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.addAndWrap (cognitive 94): _CalendarGregorian.addAndWrap has cognitive complexity 94 (threshold 15). Drivers by points: if/else 42 (76 pts), boolean chains 12, match/switch 2 (4 pts), ternaries 1 (2 pts) (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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2526}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc5182cc3d94a1e41ef0473c3c4251699cf0692668f22e01a4466e6e479015a"}},{"ruleId":"D2","level":"warning","message":{"text":"UnicodeLookalikeTable.allCharactersAllowedByTLDRules (cognitive 93): UnicodeLookalikeTable.allCharactersAllowedByTLDRules has cognitive complexity 93 (threshold 15). Drivers by points: boolean chains 78, if/else 15. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb06cb4057b71d6bb0b8643f00135bec8d72efb23d5d18013d3556763cfd6e4e"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._fastPathDateComponents (cognitive 89): Calendar._fastPathDateComponents has cognitive complexity 89 (threshold 15). Drivers by points: if/else 32 (52 pts), boolean chains 28, loops 3 (6 pts), match/switch 1 (3 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd60616d0eebced045551ba79150278f69c485ea2dd7c523ffcd913afa94533"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileOperations.removeFile (cognitive 89): _FileOperations.removeFile has cognitive complexity 89 (threshold 15). Drivers by points: if/else 28 (83 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 56). 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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f0560e5d837b640f14f4f05817d786adb77c17d3f1feeee67593b44a02f96d"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.nextMonthDayMatch (cognitive 83): _CalendarHebrew.nextMonthDayMatch has cognitive complexity 83 (threshold 15). Drivers by points: if/else 23 (58 pts), boolean chains 10, loops 4 (10 pts), ternaries 1 (5 pts) (nesting depth added 45). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"273855b9b2da0f541fded9602ec2bae64a8e50facfa9a9fef50f144fca12ad12"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileManagerImpl.createDirectory (cognitive 81): _FileManagerImpl.createDirectory has cognitive complexity 81 (threshold 15). Drivers by points: if/else 31 (71 pts), boolean chains 6, loops 2 (4 pts) (nesting depth added 42). 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":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b503473bffb890e3599ff377db03700b532aa83c123e09c76db961a008c3e9a"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BWriting.swift.writeToFileAux (cognitive 79): Data\u002BWriting.swift.writeToFileAux has cognitive complexity 79 (threshold 15). Drivers by points: if/else 36 (63 pts), boolean chains 9, ternaries 4, error handling 2, match/switch 1 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e207f39f0b75e224844066473dbe2084e86f5129bce84d6452a4650a9d819f"}},{"ruleId":"D2","level":"warning","message":{"text":"BuiltInUnicodeScalarSet.appendBitmap (cognitive 76): BuiltInUnicodeScalarSet.appendBitmap has cognitive complexity 76 (threshold 15). Drivers by points: ternaries 9 (37 pts), if/else 10 (21 pts), loops 4 (15 pts), boolean chains 2, match/switch 1 (nesting depth added 50). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"1437a82453c27d2f640ab6bfa3031f6483db398a771f6866e612018b3f4941bb"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar.compare (cognitive 75): Calendar.compare has cognitive complexity 75 (threshold 15). Drivers by points: if/else 36 (57 pts), boolean chains 14, ternaries 2, loops 1, match/switch 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb8499a80313cf6bf079fb55c7a70c8b9972e6e7684d8c015939cfd596dc16e2"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarChinese.date (cognitive 73): _CalendarChinese.date has cognitive complexity 73 (threshold 15). Drivers by points: if/else 41 (53 pts), boolean chains 16, loops 2 (4 pts) (nesting depth added 14). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c096b86adc788f4d6c6130df43762a5d167d549b303c0858c156ea6ebd551c9"}},{"ruleId":"D2","level":"warning","message":{"text":"JSONDecoderImpl.unwrapFloatingPoint (cognitive 71): JSONDecoderImpl.unwrapFloatingPoint has cognitive complexity 71 (threshold 15). Drivers by points: if/else 23 (63 pts), boolean chains 8 (nesting depth added 40). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"de027bdf3cb537c4b50c87aa38a1a63a9e356a74721d789fea7845c11fb79506"}},{"ruleId":"D2","level":"warning","message":{"text":"__DataStorage.ensureUniqueBufferReference (cognitive 70): __DataStorage.ensureUniqueBufferReference has cognitive complexity 70 (threshold 15). Drivers by points: if/else 23 (59 pts), boolean chains 9, ternaries 1 (2 pts) (nesting depth added 37). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Representations/DataStorage.swift"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7750300c2ba3ff0fafa0e8d602247e806057dab2f454a74eaa77c2a21907273"}},{"ruleId":"D2","level":"warning","message":{"text":"String._unconditionallyBridgeFromObjectiveC (cognitive 70): String._unconditionallyBridgeFromObjectiveC has cognitive complexity 70 (threshold 15). Drivers by points: if/else 26 (59 pts), ternaries 2 (7 pts), boolean chains 4 (nesting depth added 38). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"7010278b6f23fd98acc1050d09f57a7990821fb3509afc90b62b22eeaa015cfa"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU._locked_dateInterval (cognitive 67): _CalendarICU._locked_dateInterval has cognitive complexity 67 (threshold 15). Drivers by points: if/else 27 (63 pts), match/switch 3 (4 pts) (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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"3790470b4eabf2894a6b7cb5144e93d735384d443b532b2c1b5151803b56195e"}},{"ruleId":"D2","level":"warning","message":{"text":"RFC3986Parser.parse (cognitive 66): RFC3986Parser.parse has cognitive complexity 66 (threshold 15). Drivers by points: if/else 24 (50 pts), boolean chains 12, loops 3 (4 pts) (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"579e3c33e5091a75326a20e2acca20c9676bd3ab8d6d189a967ca57d7f8ebf69"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileOperations._copyDirectoryMetadata (cognitive 65): _FileOperations._copyDirectoryMetadata has cognitive complexity 65 (threshold 15). Drivers by points: if/else 16 (53 pts), loops 3 (7 pts), boolean chains 5 (nesting depth added 41). 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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"867d5d97733cf1550dbe80e00f32482ff5997b790ef3bd0e8811f6cdbdabbe20"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar.dateAfterMatchingMonth (cognitive 64): Calendar.dateAfterMatchingMonth has cognitive complexity 64 (threshold 15). Drivers by points: if/else 18 (49 pts), boolean chains 9, loops 2 (6 pts) (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1649}}}],"partialFingerprints":{"codehealthFindingId/v1":"815deb4b4f91fe5adffc78223298cf6c9987ed53728f0a1602c9e2239dbb6992"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileOperations._linkOrCopyFile (cognitive 64): _FileOperations._linkOrCopyFile has cognitive complexity 64 (threshold 15). Drivers by points: if/else 14 (44 pts), loops 3 (5 pts), match/switch 2 (5 pts), error handling 1 (4 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 40). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":1114}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b784264cb40039287600104c1a14adddd0729d1c44a0b2f9613e08dd79903bc"}},{"ruleId":"D2","level":"warning","message":{"text":"URL.parse (cognitive 61): URL.parse has cognitive complexity 61 (threshold 15). Drivers by points: if/else 30 (43 pts), boolean chains 11, loops 4 (6 pts), ternaries 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":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"16821ea4e67e64ad9193a74becda2c712863bcde042cbf487b2e102a35b7b2da"}},{"ruleId":"D2","level":"warning","message":{"text":"XMLPlistScanner.parseString (cognitive 59): XMLPlistScanner.parseString has cognitive complexity 59 (threshold 15). Drivers by points: if/else 20 (54 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"254ca299a7c47cb7573c55d466237a06716776521cb8eee601aea1b99edc0a01"}},{"ruleId":"D2","level":"warning","message":{"text":"String.data (cognitive 57): String.data has cognitive complexity 57 (threshold 15). Drivers by points: if/else 21 (38 pts), loops 3 (9 pts), ternaries 3 (8 pts), boolean chains 1, match/switch 1 (nesting depth added 28). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"41914ddd5b8a43c5d2697efc02dadc623abfed19366bcf68c1d7b5c5f2f00c66"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalePreferences.apply (cognitive 56): LocalePreferences.apply has cognitive complexity 56 (threshold 15). Drivers by points: if/else 26 (42 pts), loops 4 (10 pts), ternaries 2 (4 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"cde736a682b23d59c52cb6dda00afd601c362b54bb0b552217ab4756b1eace97"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BReading.swift.readBytesFromFile (cognitive 56): Data\u002BReading.swift.readBytesFromFile has cognitive complexity 56 (threshold 15). Drivers by points: if/else 29 (39 pts), ternaries 4 (6 pts), boolean chains 5, error handling 2 (4 pts), loops 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"6727ef51ad853c37098afaff5281bfc5beca3be538fd8a5d964a04a354fd56a8"}},{"ruleId":"D2","level":"warning","message":{"text":"String.init (cognitive 56): String.init has cognitive complexity 56 (threshold 15). Drivers by points: if/else 30 (52 pts), boolean chains 3, match/switch 1 (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":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de7811ffff56d103bef6d20c3164775974d9a841b98b2799eff8d16ff03047d"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU._locked_start (cognitive 55): _CalendarICU._locked_start has cognitive complexity 55 (threshold 15). Drivers by points: if/else 20 (52 pts), match/switch 2 (3 pts) (nesting depth added 33). 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1382}}}],"partialFingerprints":{"codehealthFindingId/v1":"717427f78829cc95df01ed18ec58fa74586068c745e14f77068cf28cd5c00317"}},{"ruleId":"D2","level":"warning","message":{"text":"BidirectionalCollection._getBlock (cognitive 54): BidirectionalCollection._getBlock has cognitive complexity 54 (threshold 15). Drivers by points: if/else 18 (39 pts), boolean chains 8, loops 2 (6 pts), ternaries 1 (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":"Sources/FoundationEssentials/AttributedString/Collection Stdlib Defaults.swift"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"83906751bc0003723112f72570e75954c7c30650d6539508dadacd98068042ba"}},{"ruleId":"D2","level":"warning","message":{"text":"_LocaleICU.weekendRange (cognitive 53): _LocaleICU.weekendRange has cognitive complexity 53 (threshold 15). Drivers by points: if/else 19 (34 pts), loops 6 (14 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":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":1224}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d5d986d2e5638f37bd9f5da916ced5ba421a7a94c18987ce19c2846cd89cdb"}},{"ruleId":"D2","level":"warning","message":{"text":"BuiltInUnicodeScalarSet.contains (cognitive 52): BuiltInUnicodeScalarSet.contains has cognitive complexity 52 (threshold 15). Drivers by points: if/else 15 (36 pts), ternaries 2 (9 pts), boolean chains 6, match/switch 1 (nesting depth added 28). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"09b81a0f392734c5317d6ba7f1e08fcd61e7ae193dab69cbac1b7c89526f305c"}},{"ruleId":"D2","level":"warning","message":{"text":"Iterator.next (cognitive 52): Iterator.next has cognitive complexity 52 (threshold 15). Drivers by points: if/else 23 (45 pts), boolean chains 7 (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":"Sources/FoundationEssentials/String/String\u002BEndianAdaptorSequence.swift"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"20bd8935660aef8d6b1af35e0cb8ae26525749b7c71b17a965f172d8eb4dd4b0"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.add (cognitive 51): _CalendarGregorian.add has cognitive complexity 51 (threshold 15). Drivers by points: if/else 22 (45 pts), boolean chains 4, match/switch 2 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d3c5dd56a5c9ff32997c9cafdfe00bd840793b45c38525a37890ce6670da65"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.dateInterval (cognitive 51): _CalendarHebrew.dateInterval has cognitive complexity 51 (threshold 15). Drivers by points: if/else 20 (38 pts), loops 3 (6 pts), boolean chains 4, match/switch 2 (3 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbf8aaa15de1f009d57e7e9105d43761fd9a460c6b63dcd18cc305ccf0a2db3"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._adjustedDateForMismatchedChineseLeapMonth (cognitive 50): Calendar._adjustedDateForMismatchedChineseLeapMonth has cognitive complexity 50 (threshold 15). Drivers by points: if/else 26 (47 pts), boolean chains 3 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"89b16447395b0cec3af346bb9f709d1f2b3e3aa5ebcce7f079eb80c8b2e73b33"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.dateComponents (cognitive 50): _CalendarGregorian.dateComponents has cognitive complexity 50 (threshold 15). Drivers by points: if/else 23 (31 pts), ternaries 2 (9 pts), match/switch 2 (6 pts), error handling 1 (3 pts), loops 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":3064}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe959e822178f1ddf1285b6526876cafefeebd7e62226551f06d461168f2064f"}},{"ruleId":"D2","level":"warning","message":{"text":"Decimal._addReportingInexact (cognitive 49): Decimal._addReportingInexact has cognitive complexity 49 (threshold 15). Drivers by points: if/else 25 (47 pts), boolean chains 2 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a359e0882d95f6c1aa906e04f03a55e669775f54d2cea7b448c740a82f8147d"}},{"ruleId":"D2","level":"warning","message":{"text":"UTF8Span._decomposed (cognitive 49): UTF8Span._decomposed has cognitive complexity 49 (threshold 15). Drivers by points: if/else 23 (41 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"2437173b5089446b207c5e84524bc8177f0a699d70a5f2ab98fbbe7a61e6f1a6"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.dateComponents (cognitive 48): _CalendarHebrew.dateComponents has cognitive complexity 48 (threshold 15). Drivers by points: if/else 25 (41 pts), boolean chains 7 (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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd984cfe958587644227faa91dd2d44f98c9756e2285c1ded9ea27d09de22e8"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents._validate (cognitive 48): DateComponents._validate has cognitive complexity 48 (threshold 15). Drivers by points: if/else 31 (46 pts), boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"17f59dd8879934271712883d0d24f29d5d9129131f97a551402289d8db041c27"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.dateComponents (cognitive 46): _CalendarGregorian.dateComponents has cognitive complexity 46 (threshold 15). Drivers by points: ternaries 17 (34 pts), if/else 5 (9 pts), boolean chains 2, error handling 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1982}}}],"partialFingerprints":{"codehealthFindingId/v1":"185591013ddc20f9ea57ff7b5f392f0108e498ebaf16c27e01f5cc4e817fe8ce"}},{"ruleId":"D2","level":"warning","message":{"text":"RFC3986Parser.parse (cognitive 46): RFC3986Parser.parse has cognitive complexity 46 (threshold 15). Drivers by points: if/else 29 (44 pts), boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"99bef3b5754a2e186992e480b4b03bc1375dde6e6bea267a96e533995783d4b1"}},{"ruleId":"D2","level":"warning","message":{"text":"_LocaleICU.init (cognitive 46): _LocaleICU.init has cognitive complexity 46 (threshold 15). Drivers by points: if/else 19 (40 pts), boolean chains 6 (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":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c0047a9f2cadfd4730a1eec224a0a4ae787ccbf1109c6dcc28212df830e57e"}},{"ruleId":"D2","level":"warning","message":{"text":"AnchoredRelativeFormatStyle.bound (cognitive 46): AnchoredRelativeFormatStyle.bound has cognitive complexity 46 (threshold 15). Drivers by points: if/else 19 (25 pts), boolean chains 11, ternaries 5 (9 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":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BAnchoredRelativeFormatStyle.swift"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6416d3a0590aca29321e1e2234b4387addfc8c92ee7eb251ae7698d39cc9313"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarChinese.dateComponents (cognitive 45): _CalendarChinese.dateComponents has cognitive complexity 45 (threshold 15). Drivers by points: if/else 24 (37 pts), boolean chains 8 (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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cb2d10cd0225dec9cf67e9cdfed4bd077b60cca160847e9b697cc3935579ff2"}},{"ruleId":"D2","level":"warning","message":{"text":"RFC3986Parser.compatibilityParse (cognitive 45): RFC3986Parser.compatibilityParse has cognitive complexity 45 (threshold 15). Drivers by points: if/else 20 (35 pts), boolean chains 5, loops 3 (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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8042fbc590d0885fe8296bb6b0851f30269e66d12ff616c971f9bdd21cf1fb2"}},{"ruleId":"D2","level":"warning","message":{"text":"_TimeZoneICUResource.binarySearchTransition (cognitive 45): _TimeZoneICUResource.binarySearchTransition has cognitive complexity 45 (threshold 15). Drivers by points: if/else 11 (24 pts), match/switch 4 (18 pts), boolean chains 2, loops 1 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_ICUResource.swift"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c3ac866952dba1523f38923ef6250e6fd6f5f057c6ba902ff33cdecb67c7234"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.range (cognitive 44): _CalendarGregorian.range has cognitive complexity 44 (threshold 15). Drivers by points: match/switch 12 (22 pts), if/else 14 (16 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 14). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"283e06b1a06b6cd7fc0421868364bd0877372cfd7d8bd58e325b91f5d58da05c"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.isComponentsInSupportedRange (cognitive 43): _CalendarGregorian.isComponentsInSupportedRange has cognitive complexity 43 (threshold 15). Drivers by points: if/else 29 (43 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1624}}}],"partialFingerprints":{"codehealthFindingId/v1":"376797da411190c03fcef21e67e701a01621cf4af88e68e2277b333e62bffee3"}},{"ruleId":"D2","level":"warning","message":{"text":"Value.dateValue (cognitive 43): Value.dateValue has cognitive complexity 43 (threshold 15). Drivers by points: if/else 26 (27 pts), boolean chains 13, ternaries 1 (2 pts), loops 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"f24f062fe7aa78679690654eea1debd69a04a86fbe56e6902046ff69c67017cf"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU._locked_add (cognitive 43): _CalendarICU._locked_add has cognitive complexity 43 (threshold 15). Drivers by points: if/else 15 (29 pts), boolean chains 8, match/switch 2 (6 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1904}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec94824d423ccd110c68c99dbcc1fdc634358b1fa416479565849f703500b45"}},{"ruleId":"D2","level":"warning","message":{"text":"Decimal._compare (cognitive 42): Decimal._compare has cognitive complexity 42 (threshold 15). Drivers by points: ternaries 8 (22 pts), if/else 15 (18 pts), match/switch 1 (2 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd32b547751a00f6af17eb95295d2bb6dcb715988518e0fd413edf31e73e5ec"}},{"ruleId":"D2","level":"warning","message":{"text":"BidirectionalCollection._matchesSeparators (cognitive 42): BidirectionalCollection._matchesSeparators has cognitive complexity 42 (threshold 15). Drivers by points: if/else 14 (24 pts), ternaries 5 (12 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Collection Stdlib Defaults.swift"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d3a090ca25d4be4b606e4f8ad3976053ac830692c674ec7de653bcd20d245b1"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._adjustedDateForMismatches (cognitive 41): Calendar._adjustedDateForMismatches has cognitive complexity 41 (threshold 15). Drivers by points: if/else 20 (32 pts), boolean chains 9 (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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0da5fa9db61f5b01831cb476e9bb90ba0081486a9c0c1bbf0cd72f6d924df8f"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgressFraction.== (cognitive 41): ProgressFraction.== has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (27 pts), boolean chains 14 (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":"Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af448a6bfb63d1ebada5ce1195e9e0bbd30afab3cc21219d7e2d979576ce2ee"}},{"ruleId":"D2","level":"warning","message":{"text":"URL_C\u002BFile.swift.posixLikePath (cognitive 41): URL_C\u002BFile.swift.posixLikePath has cognitive complexity 41 (threshold 15). Drivers by points: if/else 11 (26 pts), loops 2 (8 pts), boolean chains 7 (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":"Sources/FoundationEssentials/URL/URL_C\u002BFile.swift"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d5d7ad3127b9eea21cf9f1e0bf043ce039bde3f37600c879a0dabb78c2c0f3"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU._locked_range (cognitive 41): _CalendarICU._locked_range has cognitive complexity 41 (threshold 15). Drivers by points: match/switch 12 (22 pts), if/else 14 (16 pts), boolean chains 3 (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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"9efefc4861c40ceaaeda060110c186430508e014237e91e2de96a2fc86d8461e"}},{"ruleId":"D2","level":"warning","message":{"text":"TimeZone.tryParseGMTName (cognitive 40): TimeZone.tryParseGMTName has cognitive complexity 40 (threshold 15). Drivers by points: if/else 23 (25 pts), boolean chains 15 (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":"Sources/FoundationEssentials/TimeZone/TimeZone.swift"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fb1ec26c3d7e7654f6acae2188d41b2d5757358d3f1ba36c657c1482507d9c9"}},{"ruleId":"D2","level":"warning","message":{"text":"_URLInfo.originalString (cognitive 40): _URLInfo.originalString has cognitive complexity 40 (threshold 15). Drivers by points: if/else 23 (32 pts), boolean chains 8 (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":"Sources/FoundationEssentials/URL/URL_Info.swift"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"4970c1156a35737991749ac976d7ccd5358b05c0e20f6471e4bd40b69acbd6d9"}},{"ruleId":"D2","level":"warning","message":{"text":"UnsafeBufferPointer._decomposed (cognitive 40): UnsafeBufferPointer._decomposed has cognitive complexity 40 (threshold 15). Drivers by points: if/else 22 (33 pts), boolean chains 3, loops 2, match/switch 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb20fe9bf651080829848dda97be2a4b2873e5fca01f8c635481c49fd6998c5d"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BWriting.swift.createTemporaryFile (cognitive 40): Data\u002BWriting.swift.createTemporaryFile has cognitive complexity 40 (threshold 15). Drivers by points: if/else 20 (37 pts), boolean chains 2, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"803fdd27efd77a1d3d37c4ce743d0948a73d3ff7b0722561effd2309b049eaa7"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar.dateAfterMatchingWeekOfMonth (cognitive 39): Calendar.dateAfterMatchingWeekOfMonth has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (28 pts), loops 2 (4 pts), ternaries 1 (4 pts), boolean chains 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1751}}}],"partialFingerprints":{"codehealthFindingId/v1":"917eed766bbe540c0a776f3e4974b93deaa39c5e3c006fae401d80fb13db5313"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.difference (cognitive 38): _CalendarGregorian.difference has cognitive complexity 38 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 9, ternaries 3 (6 pts), error handling 1 (2 pts), loops 2, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2986}}}],"partialFingerprints":{"codehealthFindingId/v1":"a453ecd0a5dd3390fc4128b9b85a0abd97e4054ae8d0c7c6aefbea7803478caf"}},{"ruleId":"D2","level":"warning","message":{"text":"Span.containsInvalidPathExtensionScalar (cognitive 37): Span.containsInvalidPathExtensionScalar has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (26 pts), boolean chains 10, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Span\u002BUtils.swift"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cecfaa75bf9d85bd7602fc16a0c281f53cecbfa260187df450e8ad20a7f8af1"}},{"ruleId":"D2","level":"warning","message":{"text":"State.findCurrentTimeZone (cognitive 36): State.findCurrentTimeZone has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (26 pts), boolean chains 10 (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":"Sources/FoundationEssentials/TimeZone/TimeZone_Cache.swift"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cb92a8157df41772664c99f04d2ecdbd6bf6dbe94eb3cc5484ee1af5f27250e"}},{"ruleId":"D2","level":"warning","message":{"text":"URLEncoder.percentDecode (cognitive 36): URLEncoder.percentDecode has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (26 pts), loops 4 (6 pts), boolean chains 4 (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":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc4f8cb7331626dd1d996b29757bc917d265b26dc1c6531e9fb0af73386a10e0"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._unadjustedDates (cognitive 35): Calendar._unadjustedDates has cognitive complexity 35 (threshold 15). Drivers by points: if/else 22 (32 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"753f8d2262fe810ac707645f435526eedfe72c9f157845bbc6ae50b4080abb1d"}},{"ruleId":"D2","level":"warning","message":{"text":"Iterator.next (cognitive 35): Iterator.next has cognitive complexity 35 (threshold 15). Drivers by points: if/else 14 (31 pts), boolean chains 3, loops 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations\u002BEnumeration.swift"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"a243bbd43409eb1fad236385adb177324eb185b29f9b5b7a6b3cc970d962aa58"}},{"ruleId":"D2","level":"warning","message":{"text":"RFC3986Parser.compatibilityParse (cognitive 35): RFC3986Parser.compatibilityParse has cognitive complexity 35 (threshold 15). Drivers by points: if/else 25 (35 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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"db9572d68729325101511b211a88a2a3880679419ef110eb3253b1668d037c7e"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents.isValidDate (cognitive 34): DateComponents.isValidDate has cognitive complexity 34 (threshold 15). Drivers by points: if/else 18, boolean chains 16. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac7360e4e8c3c558b24a891019b19788ca7292883dae00b93af9da8bd378d3e9"}},{"ruleId":"D2","level":"warning","message":{"text":"Decimal._toString (cognitive 34): Decimal._toString has cognitive complexity 34 (threshold 15). Drivers by points: loops 8 (22 pts), if/else 6 (7 pts), ternaries 4 (5 pts) (nesting depth added 16). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1136976a999d16d4d5c2db0f174188ed5c2f300fefb3b119da21755d93bedf6"}},{"ruleId":"D2","level":"warning","message":{"text":"Iterator.next (cognitive 34): Iterator.next has cognitive complexity 34 (threshold 15). Drivers by points: if/else 17 (31 pts), boolean chains 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BEndianAdaptorSequence.swift"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f9f581680f898b41767f57f06424299af565e9c16ad4202ab7396e34a38959"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU._locked_setToFirstInstant (cognitive 34): _CalendarICU._locked_setToFirstInstant has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 6 (12 pts), boolean chains 4, match/switch 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1743}}}],"partialFingerprints":{"codehealthFindingId/v1":"eddca89bb834018df776c8ac8a7a70b71136f15d367e42e352e3404ed01c62b5"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.nextMonthWeekdayWeekOfMonthMatch (cognitive 33): _CalendarHebrew.nextMonthWeekdayWeekOfMonthMatch has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 8, ternaries 2 (3 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1293}}}],"partialFingerprints":{"codehealthFindingId/v1":"648f1909b0e5ebc47a6d8fbb9a0620e0098179ed9874e54e546aa8ec1c55343d"}},{"ruleId":"D2","level":"warning","message":{"text":"Base64._decode (cognitive 33): Base64._decode has cognitive complexity 33 (threshold 15). Drivers by points: if/else 18 (27 pts), boolean chains 2, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bc818aedc4340b56e3a006f9784b7288dd7008c2cdaaed2b5122509d36f4d3"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._weekdayComponents (cognitive 32): Calendar._weekdayComponents has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (19 pts), ternaries 2 (6 pts), loops 3 (5 pts), match/switch 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb48fc21f677a4d615f9ccd7b24503a29c18530f14db96eff58118fcd1d5efc"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.nextMonthWeekdayOrdinalMatch (cognitive 32): _CalendarHebrew.nextMonthWeekdayOrdinalMatch has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 8, ternaries 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"75bda5c55bfa657520e511221e7c5a559007ea8017bb387164972fc6b25fef2c"}},{"ruleId":"D2","level":"warning","message":{"text":"OpenStepPlist.swift.advanceToNonSpace (cognitive 32): OpenStepPlist.swift.advanceToNonSpace has cognitive complexity 32 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 3 (9 pts), match/switch 2 (7 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":"Sources/FoundationEssentials/PropertyList/OpenStepPlist.swift"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"a988ce48e36b21f2396b740c70934fa0978754c69682eb70f28b7dc0cbe8d0cc"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.nextWeekdayOrdinalMatch (cognitive 31): _CalendarHebrew.nextWeekdayOrdinalMatch has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (23 pts), boolean chains 7, 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1240}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70142db2a29b7336a4d6450a9561073cdd2aa431819f6a3ddd8563be048999a"}},{"ruleId":"D2","level":"warning","message":{"text":"Guts.enforceAttributeConstraintsAfterMutation (cognitive 31): Guts.enforceAttributeConstraintsAfterMutation has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 10 (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":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de14505b1db202367319fdcca0f39fc7b5ce9d61443939743c251da98a488af"}},{"ruleId":"D2","level":"warning","message":{"text":"Attributed._format (cognitive 31): Attributed._format has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (15 pts), ternaries 5 (8 pts), loops 3 (5 pts), match/switch 2, 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":"Sources/FoundationInternationalization/Formatting/ByteCountFormatStyle.swift"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b6b48c81fb8508e71043bda84306e2ea01144b081f38ec9d5f13b655871fbc9"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributedString.init (cognitive 30): AttributedString.init has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (23 pts), boolean chains 6, 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":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7731fdd9d0ded3ff05b1fc66c058d54824df0c3c0cfc33f2373cd21b0405a96"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._adjustedDate (cognitive 30): Calendar._adjustedDate has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 11, ternaries 1 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dd5b09df6df18022f43ffddced9e11ab9d5fa36f869436836af99d3ebbbe772"}},{"ruleId":"D2","level":"warning","message":{"text":"URLEncoder.percentDecode (cognitive 30): URLEncoder.percentDecode has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 6, loops 2 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7b4a463813a9f3f00fc1908dbddb4a2b3b734eab077325140f7775d06ba4650"}},{"ruleId":"D2","level":"warning","message":{"text":"_URL.deletingLastPathComponent (cognitive 30): _URL.deletingLastPathComponent has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (21 pts), ternaries 3 (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":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"05201b61081f26ba576caa2e1ba36f507f3a9e52f47a62991175a72152270251"}},{"ruleId":"D2","level":"warning","message":{"text":"Duration.bound (cognitive 30): Duration.bound has cognitive complexity 30 (threshold 15). Drivers by points: ternaries 5 (12 pts), if/else 8 (10 pts), boolean chains 6, 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":"Sources/FoundationEssentials/UUID.swift"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c8cf6357fca9f766c0bccd1ac326585803e3098776f31bc88b0e0b5e5541d0"}},{"ruleId":"D2","level":"warning","message":{"text":"_TimeZoneSingleDSTRule.startDateForRuleInYear (cognitive 30): _TimeZoneSingleDSTRule.startDateForRuleInYear has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (13 pts), ternaries 4 (12 pts), boolean chains 4, 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":"Sources/FoundationInternationalization/TimeZone/TimeZone_SingleDSTRule.swift"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"502c6ca16d2e4ac389f1afd8b8de6fe572254c4491592ed9ec842c348782b509"}},{"ruleId":"D2","level":"warning","message":{"text":"_URL.windowsFilePath (cognitive 29): _URL.windowsFilePath has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 8, loops 3 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"424c286e2df87a3122526b6dc25be2e94f56d488b35bf5588bba560cdc440ecf"}},{"ruleId":"D2","level":"warning","message":{"text":"OpenStepPlist.swift.getDataBytes (cognitive 29): OpenStepPlist.swift.getDataBytes has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (20 pts), boolean chains 8, 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":"Sources/FoundationEssentials/PropertyList/OpenStepPlist.swift"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"676aaf9e6f4b008c4462f0c14e14017e2638818db9a586cda446588844043a77"}},{"ruleId":"D2","level":"warning","message":{"text":"Base64._encodeWithLineBreaks (cognitive 28): Base64._encodeWithLineBreaks has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (19 pts), ternaries 2 (4 pts), boolean chains 3, loops 1, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2fa880c72f78803ca03d8bbb4e4c3a4b3804ed195763a058e981e16f5f4283"}},{"ruleId":"D2","level":"warning","message":{"text":"BufferViewIterator.digits (cognitive 28): BufferViewIterator.digits has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (24 pts), boolean chains 3, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferViewIterator.swift"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32e8f5eadea8ce3004e58d28115040960ce5adbbf5be433a6f831ff435c1791"}},{"ruleId":"D2","level":"warning","message":{"text":"_TimeZoneICUResource.init (cognitive 28): _TimeZoneICUResource.init has cognitive complexity 28 (threshold 15). Drivers by points: if/else 15 (17 pts), loops 3 (6 pts), boolean chains 4, ternaries 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":"Sources/FoundationInternationalization/TimeZone/TimeZone_ICUResource.swift"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62e9ee04fc8c30c3dd91f4175a4d5d387c2462fd20368c703a2a4eaadce9544"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar.dateAfterMatchingWeekdayOrdinal (cognitive 27): Calendar.dateAfterMatchingWeekdayOrdinal has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (22 pts), boolean chains 3, 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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1849}}}],"partialFingerprints":{"codehealthFindingId/v1":"555e2398079a114df7087b50aa2d8a56be2e9ec0ae99d33f6e54d76b18235026"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvedDateComponents.init (cognitive 27): ResolvedDateComponents.init has cognitive complexity 27 (threshold 15). Drivers by points: if/else 17 (20 pts), boolean chains 7 (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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8cdfbd955973b97ae902b9e7ab240e9e3feeccab63aef42c85a7e2a1cfafea6"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.supportsNextDateFastPath (cognitive 27): _CalendarHebrew.supportsNextDateFastPath has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 19, if/else 7 (8 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"2624ddd332f75fcdd25af3a3be365b0bdd96cd7fc47c5568dd3724fa20be7aaf"}},{"ruleId":"D2","level":"warning","message":{"text":"Decimal.init (cognitive 27): Decimal.init has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 3 (6 pts), ternaries 2 (4 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"698a475378a7b17ed7c55868d6ee8029d613a9a0665da6d99051e245b80f665a"}},{"ruleId":"D2","level":"warning","message":{"text":"JSON5Scanner.validateNumber (cognitive 27): JSON5Scanner.validateNumber has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 4, loops 2 (3 pts), match/switch 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"411d8401d98d4b0aa3685fa25861dd7df72bff4db64e8046c80fa68ed74715a1"}},{"ruleId":"D2","level":"warning","message":{"text":"Value.parseSpecialRealValue (cognitive 27): Value.parseSpecialRealValue has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 13, if/else 7 (13 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":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed4579c96cc9f82d3d60083e7169071b9deeb1cb6c5b7a9893af74b3a2a425ef"}},{"ruleId":"D2","level":"warning","message":{"text":"URL.schemeFlags (cognitive 27): URL.schemeFlags has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 15, if/else 7 (11 pts), match/switch 1 (nesting depth added 4). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"4975446aad1c70feff338049073b3976ed8d741ebcac2376ab5dba901d1b25c2"}},{"ruleId":"D2","level":"warning","message":{"text":"_SwiftURL.appending (cognitive 27): _SwiftURL.appending has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (19 pts), boolean chains 7, 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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d009c704ea611aea8f504aaaefd651eb005b0ff62d84a4c5e9e8c9fdbfd84ea"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BReading.swift.readBytesFromFileDescriptor (cognitive 27): Data\u002BReading.swift.readBytesFromFileDescriptor has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 5, 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":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab70e10b030d3e9b0afc1d45aeaba7b4fc22a97b9cfbcdf0cb9ba69d38446efe"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BWriting.swift.writeToFileDescriptorWithProgress (cognitive 27): Data\u002BWriting.swift.writeToFileDescriptorWithProgress has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 4, loops 2 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eaac643fb8d6e1a386237b8c7cccb18bd1e6dce811980d6ac0b2ab5182a5ba1"}},{"ruleId":"D2","level":"warning","message":{"text":"ListFormatterImpl.format (cognitive 27): ListFormatterImpl.format has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 8, loops 2 (5 pts), match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/ListFormatterImpl.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"dccbcc28b1e77f385f3ffe13b99095fd2eca4a3d3adf2ad83c92d938d27f4af1"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarChinese.range (cognitive 26): _CalendarChinese.range has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (16 pts), match/switch 6 (10 pts) (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b68fc412f8c09fbe276b57e7abf1b4e6c3b1e4b6170256481d837110ce4088"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.minMaxRange (cognitive 26): _CalendarGregorian.minMaxRange has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (23 pts), boolean chains 1, loops 1, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e41f97df444fbd09a943b05e4e7ebb9e5395172265f2281584bbef7c83bcc02"}},{"ruleId":"D2","level":"warning","message":{"text":"JSONDecoderImpl.unwrapDecimal (cognitive 26): JSONDecoderImpl.unwrapDecimal has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (19 pts), match/switch 2 (5 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"f206fdd9dfc257118aaacab07ba8829e65a1de277ae05eee458d4e832f85e00c"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarChinese.ordinality (cognitive 25): _CalendarChinese.ordinality has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 1, match/switch 1 (nesting depth added 11). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"8908cb7646a05283fa9302b3692164183c2505da009c8cb35a0f96c8b089952c"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileOperations._copyRegularFile (cognitive 25): _FileOperations._copyRegularFile has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (19 pts), boolean chains 4, loops 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3632157bea76ce5fff8dcac4e8cc5a4c844863e552039d9d321f0dca28a3ad8"}},{"ruleId":"D2","level":"warning","message":{"text":"XMLPlistScanner.readTag (cognitive 25): XMLPlistScanner.readTag has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (23 pts), match/switch 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e10cfde56acb1946f5b1964ff09c70308f9363ad27b4dac001cdaaa598dc4ed"}},{"ruleId":"D2","level":"warning","message":{"text":"_URLComponents._uncheckedString (cognitive 25): _URLComponents._uncheckedString has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17, boolean chains 7, ternaries 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":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81b563a7b5eaa173139a0328780c2a8663d0da784cc1d2c41231f01edead920"}},{"ruleId":"D2","level":"warning","message":{"text":"_SwiftURL.fillCFURLImpl (cognitive 25): _SwiftURL.fillCFURLImpl has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17 (19 pts), boolean chains 6 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":1242}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a0b1b81f02444fbfadacc6db590a14189537dadf51566dc1659b5495c197cee"}},{"ruleId":"D2","level":"warning","message":{"text":"OutputSpan.append (cognitive 25): OutputSpan.append has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 4 (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":"Sources/FoundationEssentials/Span\u002BUtils.swift"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f9ed8574e2cb72f89cba9bc90b44aad9d8e636512f7bc6c57008298ce2a200"}},{"ruleId":"D2","level":"warning","message":{"text":"String\u002BIO.swift.encodingFromDataForExtendedAttribute (cognitive 25): String\u002BIO.swift.encodingFromDataForExtendedAttribute has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (19 pts), match/switch 2 (6 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7a05fedccebe3705fbcc05de648870c59640891ba8629a7d8b2049cd4060f76"}},{"ruleId":"D2","level":"warning","message":{"text":"Date.daysBeforeMonth (cognitive 24): Date.daysBeforeMonth has cognitive complexity 24 (threshold 15). Drivers by points: ternaries 11 (22 pts), if/else 1, match/switch 1 (nesting depth added 11). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Date.swift"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"07072ac35f57cf2e9358acafca8dea493f4a56a3f97ed97f92e4ff1d3010eb23"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._adjustedComponents (cognitive 24): Calendar._adjustedComponents has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 2, match/switch 1 (nesting depth added 11). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"e584537a278dcb230781fa079967969fc513765ad1cf4db2b41d8fe3a00c68b0"}},{"ruleId":"D2","level":"warning","message":{"text":"Data._computeGoodSubstringShift (cognitive 24): Data._computeGoodSubstringShift has cognitive complexity 24 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 6 (10 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f117d8c46940d74c16cd43e7d4e3ed79933cfcb765635351b6a703ef9af914"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileManagerImpl._setCatInfoAttributes (cognitive 24): _FileManagerImpl._setCatInfoAttributes has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (22 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":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb5fa2624b28f2dda62af2b7e2785539baaca321bccb5d3afb00b7c7c86b44e1"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgressFraction._math (cognitive 24): ProgressFraction._math has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 7 (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":"Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"06def4cba7a2d4169c04cd94234e9226d6a86e29c60645c1c95ecaa25309d7f2"}},{"ruleId":"D2","level":"warning","message":{"text":"BidirectionalCollection._range (cognitive 24): BidirectionalCollection._range has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 2 (3 pts), ternaries 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":"Sources/FoundationEssentials/AttributedString/Collection Stdlib Defaults.swift"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"65e11f14e3f25a9d0e235c5e1b18052c90e9245f8fa13b945042ee0b8a0b9e1b"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitsFormatStyle.interval (cognitive 24): UnitsFormatStyle.interval has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 10, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Duration\u002BUnitsFormatStyle.swift"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"6560900cdf9f49e5f16c0edea0fd1716f930eea2954c58d0662890e8be6d7fab"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar.advance (cognitive 23): Calendar.advance has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 2, match/switch 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1381}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f15402bd6e0bec5923e4cf5feccf5a647d1c04c6fdb2849e2853643022f8da"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarChinese.date (cognitive 23): _CalendarChinese.date has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15 (16 pts), boolean chains 7 (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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1639705e596d75daa72db511f8791b9eba67e0d686407339b80f43e2f41b2f"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian._firstInstant (cognitive 23): _CalendarGregorian._firstInstant has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 5, loops 2 (4 pts), match/switch 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":742}}}],"partialFingerprints":{"codehealthFindingId/v1":"001f4deb0d156d24a270cd663c0eb73bb7f32f443e9a1b64b4313235982fbaa6"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents.== (cognitive 23): DateComponents.== has cognitive complexity 23 (threshold 15). Drivers by points: boolean chains 17, if/else 6. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"0615293aa888c1a6265e7dba552da035076879f91b5f17007cdb8108e33a3d51"}},{"ruleId":"D2","level":"warning","message":{"text":"JSONWriter.serializeObject (cognitive 23): JSONWriter.serializeObject has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 3 (8 pts), ternaries 1 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONWriter.swift"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"029fb238ac8b8b0e92e39d6b237f8f5d8e28c320826e34dde5bd91e9656d2739"}},{"ruleId":"D2","level":"warning","message":{"text":"Locale.identifier (cognitive 23): Locale.identifier has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (14 pts), boolean chains 7, loops 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale.swift"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06b9c0127adf756e4edd3b1e59b9828af14438631652e3c6c9d9afd13c759d0"}},{"ruleId":"D2","level":"warning","message":{"text":"BPlistScanner.parseTopLevelInfo (cognitive 23): BPlistScanner.parseTopLevelInfo has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, boolean chains 5. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6882ffb995941a151911bc4249f9c3eacb3391bdf4f94b613282788a7b334d"}},{"ruleId":"D2","level":"warning","message":{"text":"_URLComponents.computedString (cognitive 23): _URLComponents.computedString has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16 (18 pts), boolean chains 5 (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":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c13e70f80ea08ca81a13981151364936cd9c188a16654b19d99496aab3dccf"}},{"ruleId":"D2","level":"warning","message":{"text":"_SwiftURL._makeCFURL (cognitive 23): _SwiftURL._makeCFURL has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16 (17 pts), boolean chains 6 (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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":1106}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ec900e77cb8cf64698de6fe8d30c5bb66d0402c4fb089c8ac77e10ab695fcb0"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU.dateComponents (cognitive 23): _CalendarICU.dateComponents has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, ternaries 2 (4 pts), boolean chains 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1209}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d6d4a95c070541b025833072919aff346e4216093cece2524ac7b4259b383e"}},{"ruleId":"D2","level":"warning","message":{"text":"Signature.createNumberFormatter (cognitive 23): Signature.createNumberFormatter has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 5 (10 pts), error handling 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/ICULegacyNumberFormatter.swift"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d475001bdca838df7a61353ffe7bd759a6dacb9463dbdb1ab2ecb7afe58688f"}},{"ruleId":"D2","level":"warning","message":{"text":"build-list-format-data-impl.swift.pack (cognitive 23): build-list-format-data-impl.swift.pack has cognitive complexity 23 (threshold 15). Drivers by points: loops 13 (17 pts), if/else 2 (3 pts), boolean chains 2, ternaries 1 (nesting depth added 5). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"utils/build-list-format-data-impl.swift"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5ef706b6c91e05a3b4478ad12201c4be460c97dbede453e9806275420265e7"}},{"ruleId":"D2","level":"warning","message":{"text":"JSONScanner.validateNumber (cognitive 22): JSONScanner.validateNumber has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 4, loops 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":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d2bbd06aed09373a299fcc12ba97cd737edea2269528d65d0dc89ed9dda4867"}},{"ruleId":"D2","level":"warning","message":{"text":"BuiltInUnicodeScalarSet.hasMember (cognitive 22): BuiltInUnicodeScalarSet.hasMember has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 5 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c11fca71b650449805b6e37202715bbdac5cbee354f7e126d5710db567252a"}},{"ruleId":"D2","level":"warning","message":{"text":"_URL.init (cognitive 22): _URL.init has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 6, match/switch 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"d68d736e88ffb75ea9adaf6ce9ec63d59c43dd3c58e8928538738f1725f4da07"}},{"ruleId":"D2","level":"warning","message":{"text":"Runs._slicedRunBoundary (cognitive 22): Runs._slicedRunBoundary has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"34068471abe2818b99eff8e2d014f94e3aaaa1fa2a07be5ceb07dd20f56d24a5"}},{"ruleId":"D2","level":"warning","message":{"text":"RuleComponents.init (cognitive 22): RuleComponents.init has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 4, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_SingleDSTRule.swift"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"a16127b6d13d2fcf24157c0059d31a11f21ac94f850e084e6ee189225b4870f5"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._adjustedDateForMismatchedHour (cognitive 21): Calendar._adjustedDateForMismatchedHour has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 5 (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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9926923ec77cb2a757e08df02168858b7ab6c06e412af556de98baaba5eb843"}},{"ruleId":"D2","level":"warning","message":{"text":"Base64._encode (cognitive 21): Base64._encode has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (16 pts), ternaries 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":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b06c480a52976b6384c83bf92f17fea4d1a06071d9912b01b134cb6c4b70492"}},{"ruleId":"D2","level":"warning","message":{"text":"Decimal.== (cognitive 21): Decimal.== has cognitive complexity 21 (threshold 15). Drivers by points: boolean chains 20, if/else 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0ab5e60a22412548db32e1cccec344faed90a4d7536eed222cd3dcc30c7f41"}},{"ruleId":"D2","level":"warning","message":{"text":"URLEncoder._percentEncode (cognitive 21): URLEncoder._percentEncode has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 7, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4b8edc4d941e2b15722aa46ab5fd7069f239e3c4b33b32ff9da4467a509346"}},{"ruleId":"D2","level":"warning","message":{"text":"_SwiftURL.init (cognitive 21): _SwiftURL.init has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 4, 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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"fab249b5f4ab644a48aac1e6227caded677d4506e832acc739269acc23213cdc"}},{"ruleId":"D2","level":"warning","message":{"text":"OpenStepPlist.swift.parseQuotedPlistString (cognitive 21): OpenStepPlist.swift.parseQuotedPlistString has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (20 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":"Sources/FoundationEssentials/PropertyList/OpenStepPlist.swift"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7374d0bad11a22ff6495df209bc2da72e2ffbd6c9eb55489308cd6a4db2de89"}},{"ruleId":"D2","level":"warning","message":{"text":"PredicateQueryRewriter._processFunction (cognitive 21): PredicateQueryRewriter._processFunction has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 6, ternaries 3, 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":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"e76f7e65c8079f9f96ebe2697868d310d7945cf8de77e60210e6ae1f59f1806b"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.range (cognitive 20): _CalendarHebrew.range has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10, match/switch 6 (10 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c85698d8fd0830c3ad1d772785b9fd554a248765accfd2c6332bbc219d35639"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents._bridgeToObjectiveC (cognitive 20): DateComponents._bridgeToObjectiveC has cognitive complexity 20 (threshold 15). Drivers by points: if/else 20. 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. This shape REPEATS in the file: one other method here (DateComponents._conditionallyBridgeFromObjectiveC) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"89b0d99f20035bc130ee023ed3a9e042f1e639df48e8e12204094d01ea056fed"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents._conditionallyBridgeFromObjectiveC (cognitive 20): DateComponents._conditionallyBridgeFromObjectiveC has cognitive complexity 20 (threshold 15). Drivers by points: if/else 20. 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. This shape REPEATS in the file: one other method here (DateComponents._bridgeToObjectiveC) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":747}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3a4c2861ec84d51a803fd82ec5d02a34dae781006800faddd3a4933546575e"}},{"ruleId":"D2","level":"warning","message":{"text":"Data._searchBoyerMoore (cognitive 20): Data._searchBoyerMoore has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (4 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":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2746e6c1c55cd2544c50b3e3ae9bbb6515d84d24e34026e100978fc4caeec5"}},{"ruleId":"D2","level":"warning","message":{"text":"_SwiftURL.absoluteString (cognitive 20): _SwiftURL.absoluteString has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16 (18 pts), boolean chains 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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54cc023adefd94a00b43064a5ff12d95ac3f9acca2fd40064ae0e0dea5ceb20"}},{"ruleId":"D2","level":"warning","message":{"text":"Guts._characterwiseIsEqual (cognitive 20): Guts._characterwiseIsEqual has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 3, 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":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b95fdd8a71b5f875339a1b03b6a4474f7c8fe20e5f3fe4928517994280999f8"}},{"ruleId":"D2","level":"warning","message":{"text":"ListFormatterImpl.shouldWrapBidi (cognitive 20): ListFormatterImpl.shouldWrapBidi has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (7 pts), match/switch 1 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/ListFormatterImpl.swift"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d7686a8d191c0756f57946be17d25c76d503ea39ca4b682abb32f7f170bbc0"}},{"ruleId":"D2","level":"warning","message":{"text":"ComponentSet.set (cognitive 19): ComponentSet.set has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"29151c952b02aae28b31223794fbe2f57fa99cdfaf90e46707f787a40c9235f2"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.julianDay (cognitive 19): _CalendarGregorian.julianDay has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (11 pts), ternaries 3 (6 pts), match/switch 2 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1715}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e0bb47f85ab733bfcea2cd5762a4884291fee337aeeabf5f02e827a4f59c22"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarHebrew.date (cognitive 19): _CalendarHebrew.date has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 7 (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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"049a6c1e018829c13200064e91a76ceda2f63e9cc19db4a14c2754913735a4df"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents.customMirror (cognitive 19): DateComponents.customMirror has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0db9c52d1f554c47ebeb93ca9b5034508d103a9dbabdc18b2afe3dc7181467d"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileManagerImpl._setFileProtectionValueForPath (cognitive 19): _FileManagerImpl._setFileProtectionValueForPath has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (17 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":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7eca7454765553998444d9e4a82352e46403729dc255dbdf4d5ddb7cf86c5db"}},{"ruleId":"D2","level":"warning","message":{"text":"JSONDecoderImpl.isTrueZero (cognitive 19): JSONDecoderImpl.isTrueZero has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 2, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf8dac5b38f6a18392cc48244529e31b49e25e2d6de22a1e7a2d7d118426a83"}},{"ruleId":"D2","level":"warning","message":{"text":"Value.integerValue (cognitive 19): Value.integerValue has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (17 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":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afa48c3a8c0e2f204383d78718e7d86ab29ad77dbc13514343398f4bd65bc70"}},{"ruleId":"D2","level":"warning","message":{"text":"JSONScanner.prevalidateJSONNumber (cognitive 19): JSONScanner.prevalidateJSONNumber has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 4 (7 pts), loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bac5f44960e161c272996d1c17ffdd1b873aa49ca6cfd3a72de42a871d69f1f"}},{"ruleId":"D2","level":"warning","message":{"text":"XMLPlistScanner.scanUpToNextValue (cognitive 19): XMLPlistScanner.scanUpToNextValue has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (11 pts), ternaries 1 (4 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e8bee7ba11f3a5b1c23916c74fd1a0456a3a191e64297ec842ee37fb53ec61"}},{"ruleId":"D2","level":"warning","message":{"text":"_URL.appending (cognitive 19): _URL.appending has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (9 pts), boolean chains 5, ternaries 2 (4 pts), match/switch 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":941}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ccfac3855b2a0ce4dba3624b1085c46a3edb18ab6b56a8c8249023146d90020"}},{"ruleId":"D2","level":"warning","message":{"text":"_SwiftURL.host (cognitive 19): _SwiftURL.host has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (15 pts), boolean chains 4 (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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21becfbbe15776d05d94ee2f89b29a390485ffd725ae49bfcd9f2c06da9038f"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BReading.swift.shouldMapFileDescriptor (cognitive 19): Data\u002BReading.swift.shouldMapFileDescriptor has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 3 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd37e2f4efccedc932061bc2b0e6c61431d84770ca8baac38df621299c3f83f4"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BWriting.swift.writeToFileNoAux (cognitive 19): Data\u002BWriting.swift.writeToFileNoAux has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 3, ternaries 3, error handling 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":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae37be9b8ed55833b896d692aaea824807ee5dae2c8ce298475d763a01bdce3"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU.date (cognitive 19): _CalendarICU.date has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18, boolean chains 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbeac5b9a0f5197fabcd99f7a5b6ff8b0a9bc7f930af7dfb941183d103239e65"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU.dateComponents (cognitive 19): _CalendarICU.dateComponents has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18 (19 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1311}}}],"partialFingerprints":{"codehealthFindingId/v1":"06da667e63593f61a851a1a902cb6b499fa67359ad79b2e56009892ac4445c10"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar_ObjC.swift._fromNSCalendarUnits (cognitive 19): Calendar_ObjC.swift._fromNSCalendarUnits has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"a525395e59a0191eaf024fc4a2e47f8fc68694c6ac950f0c4cc1196d214b8467"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileManagerImpl.url (cognitive 18): _FileManagerImpl.url has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 6, ternaries 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"37ef2addef30e3f12fe653ad6a16e5c22f30842da2879e00afb07fa67b078c62"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileManagerImpl.subpathsOfDirectory (cognitive 18): _FileManagerImpl.subpathsOfDirectory has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 2, loops 2, match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"53e7d6d17cb33b91f6459a16920642a007706b7e4b154428536668444a6902fc"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileOperations.linkOrCopyFile (cognitive 18): _FileOperations.linkOrCopyFile has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (8 pts), error handling 3 (6 pts), loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"599087f46a76e662f108377129d263d5b301002cba2d9bcc7bdbef2ac726f58c"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalePreferences.apply (cognitive 18): LocalePreferences.apply has cognitive complexity 18 (threshold 15). Drivers by points: if/else 18. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"05e566021fd4e72787440a355c251f0b3c6d5fe8c4fec4c94eb481847fdf051c"}},{"ruleId":"D2","level":"warning","message":{"text":"XMLPlistScanner.scanXMLElement (cognitive 18): XMLPlistScanner.scanXMLElement has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), ternaries 1 (3 pts), match/switch 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"a65677e0f113fb752dc2404c9fd804c7a79c09472ed75e451138d32d20c99dc7"}},{"ruleId":"D2","level":"warning","message":{"text":"XMLPlistScanner.parseEntityReference (cognitive 18): XMLPlistScanner.parseEntityReference has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 4, ternaries 1 (2 pts), match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1279}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cfbbccef58c840e05d8e233b513c0dc734b78ab1ab59dc883a8395a3e202960"}},{"ruleId":"D2","level":"warning","message":{"text":"NumberingSystem.validNumberingSystems (cognitive 18): NumberingSystem.validNumberingSystems has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 5, 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":"Sources/FoundationEssentials/Locale/Locale\u002BComponents.swift"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"73dc1a9ce674c4e0df0b1f924054d188a0a913da0d716dd5e02f9bb441693870"}},{"ruleId":"D2","level":"warning","message":{"text":"Components.init (cognitive 18): Components.init has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale\u002BComponents.swift"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"81c50d75c3f1d5c0fd666019ba194ac1d1751e874bb0353a7d1d4086a2a3634e"}},{"ruleId":"D2","level":"warning","message":{"text":"FileManager\u002BSearchPaths.swift._DarwinSearchPaths (cognitive 18): FileManager\u002BSearchPaths.swift._DarwinSearchPaths has cognitive complexity 18 (threshold 15). Drivers by points: ternaries 2 (7 pts), if/else 4 (6 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/SearchPaths/FileManager\u002BSearchPaths.swift"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c632ef7b5dccf5b3cd0fcf37f6fe7c8251fc0ff3c290d0057fe6ff1268471fe"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarICU.date (cognitive 18): _CalendarICU.date has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, boolean chains 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"837996c76e7024f961d76cb755e27925bc4c31b29d78739c62ce64efa2598fea"}},{"ruleId":"D2","level":"warning","message":{"text":"DateFieldCollection.updateSchedule (cognitive 18): DateFieldCollection.updateSchedule has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15 (16 pts), boolean chains 1, match/switch 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Date/ICUDateFormatter.swift"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"80ceb3517a86fc0d777fd1e32097a6a920dc0a68fb6f65e2428626aa2e1f9324"}},{"ruleId":"D2","level":"warning","message":{"text":"ComponentSet.highestSetUnit (cognitive 17): ComponentSet.highestSetUnit has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17. 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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"97d15cece29286dfc7cc7205c54ac78c6f5fe7fe810d085d520a7e0ab493d926"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarUtility.isDateInWeekend (cognitive 17): _CalendarUtility.isDateInWeekend has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (10 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":"Sources/FoundationEssentials/Calendar/CalendarUtility.swift"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ec8dff2a2bdf84510a2e85cf4e7a83fbedb407b8dc408b2b015b18fd8a5000b"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarChinese.year (cognitive 17): _CalendarChinese.year has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 2, loops 2, ternaries 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":1101}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b49777fa20a23e8210a2aeea5801f03d2120daf89d8bf3c145172fda90551b3"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.dateInterval (cognitive 17): _CalendarGregorian.dateInterval has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), match/switch 3 (5 pts), error handling 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd95dea9e11af798ba226ff845e1916107ef21408da9bd4a008392ba8fcd0f7"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.isDateInWeekend (cognitive 17): _CalendarGregorian.isDateInWeekend has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (10 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1590}}}],"partialFingerprints":{"codehealthFindingId/v1":"3642cdbe2a05fc7a64b0ea71e289a822b8d841bca8e07ca5d2d607d9dd75ae4c"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.date (cognitive 17): _CalendarGregorian.date has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, boolean chains 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2840}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c0d32174df8b2d66ee0450ff1f76e13d804f9eac556de4c35d00877a4f5f88"}},{"ruleId":"D2","level":"warning","message":{"text":"_CalendarGregorian.date (cognitive 17): _CalendarGregorian.date has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, boolean chains 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2906}}}],"partialFingerprints":{"codehealthFindingId/v1":"e18884dc5a70d4b08848d752d4bfccecb2f9a051858496f545dea918fe94bca1"}},{"ruleId":"D2","level":"warning","message":{"text":"Value.dataValue (cognitive 17): Value.dataValue has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (16 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":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"103e42f598cc548f41fb112ee15d6011bddb86bb379a8c3fec60e84ad70d5fff"}},{"ruleId":"D2","level":"warning","message":{"text":"URLEncoder.addPercentEscapes (cognitive 17): URLEncoder.addPercentEscapes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 3, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"68163fa9d6f1827ecc2306da45334a96de0c8c38246569aade641ad456e407b5"}},{"ruleId":"D2","level":"warning","message":{"text":"_URL.appending (cognitive 17): _URL.appending has cognitive complexity 17 (threshold 15). Drivers by points: boolean chains 6, if/else 5 (6 pts), loops 2 (5 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":1118}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5ff04cffdd730ebb587227579d4494d1b7c825d952449d7d7c61376d0cab14b"}},{"ruleId":"D2","level":"warning","message":{"text":"Span.pathExtensionDotIndex (cognitive 17): Span.pathExtensionDotIndex has cognitive complexity 17 (threshold 15). Drivers by points: boolean chains 7, if/else 6 (7 pts), loops 3 (nesting depth added 1). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Span\u002BUtils.swift"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e86c0b287506f0ed1fb93e7b93a6df92f7ffe9c2491bec061cfbcc38e0bf60c"}},{"ruleId":"D2","level":"warning","message":{"text":"NSCalendar._newCalendarWithIdentifier (cognitive 17): NSCalendar._newCalendarWithIdentifier has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17. 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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed11fab711faab0a64ab96238f7eeac63aa279d5fd8ee3113cf4fdb10d01a195"}},{"ruleId":"D2","level":"warning","message":{"text":"Data\u002BWriting.swift.createProtectedTemporaryFile (cognitive 17): Data\u002BWriting.swift.createProtectedTemporaryFile has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, error handling 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"f700b87dea1b0fc43659091263104af49a3a5f2236aa691b6914985534868a7c"}},{"ruleId":"D2","level":"warning","message":{"text":"URL_Resolution.swift.resolveURLBuffers (cognitive 17): URL_Resolution.swift.resolveURLBuffers has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (17 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":"Sources/FoundationEssentials/URL/URL_Resolution.swift"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac02cb4595220f0308a78198b05865dea0c221a6d83c579b68bf9e37193217cc"}},{"ruleId":"D2","level":"warning","message":{"text":"_LocaleICU.firstDayOfWeek (cognitive 17): _LocaleICU.firstDayOfWeek has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (17 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":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"511a6bcc5a4548e896c523a0dab8ad53cdec7aadb738318047b431f94e7a22b5"}},{"ruleId":"D2","level":"warning","message":{"text":"_TimeZoneICU.timeZoneNamesFromICU (cognitive 17): _TimeZoneICU.timeZoneNamesFromICU has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 5, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_ICU.swift"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"19aa4970e79420ea0336c18647a6769f88fa2a0e81360b236f20a49abce590be"}},{"ruleId":"D2","level":"warning","message":{"text":"_TimeZoneSingleDSTRule.dstTransition (cognitive 17): _TimeZoneSingleDSTRule.dstTransition has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), boolean chains 5, match/switch 2 (3 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":"Sources/FoundationInternationalization/TimeZone/TimeZone_SingleDSTRule.swift"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"fccc12016a86ba19054b794ac1dafb61c92c8c686b5952fb4081b293b4bfea73"}},{"ruleId":"D2","level":"warning","message":{"text":"_TimeZoneSingleDSTRule.startDateForRule (cognitive 17): _TimeZoneSingleDSTRule.startDateForRule has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 5, match/switch 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_SingleDSTRule.swift"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c535c4f8fbb3f5b05d4599f6e75d3a9556c52594088f7b95235a31cc7ccec4"}},{"ruleId":"D2","level":"warning","message":{"text":"String.withNTPathRepresentation (cognitive 17): String.withNTPathRepresentation has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (9 pts), boolean chains 7, ternaries 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"feea682a2018025f1187cfac0dde1df3ec313db2410bb364ec6f9239cae41061"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._enumerateDates (cognitive 16): Calendar._enumerateDates has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), error handling 2 (4 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"e34bd070aab9137677fbfd59024d633749fdd8ebd7d749932fa4b54541fb2205"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar._matchingDate (cognitive 16): Calendar._matchingDate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1715c12c86b6b4fed6cb3abf31d92004ee514bb739e0900b8e9115c47c5e13"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar.dateAfterMatchingQuarter (cognitive 16): Calendar.dateAfterMatchingQuarter has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1537}}}],"partialFingerprints":{"codehealthFindingId/v1":"230d8adab1a4c80a9b1e61efbcd7f0bbb45f88cf9f49981b72280f7e9d0e7386"}},{"ruleId":"D2","level":"warning","message":{"text":"Calendar.bound (cognitive 16): Calendar.bound has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (7 pts), ternaries 3 (7 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1357}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb82e06ae6f211200e21996636828b6382525d3adfab5728cc2a25567183c1ad"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents.setUnits (cognitive 16): DateComponents.setUnits has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents.mismatchedUnits) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"0427622268f135e2dbc75a3a166044812ce0e36e9d6dbdaf1dee7fd402ee6f85"}},{"ruleId":"D2","level":"warning","message":{"text":"DateComponents.mismatchedUnits (cognitive 16): DateComponents.mismatchedUnits has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (DateComponents.setUnits) 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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"956752e1eaf61207561e4e9414335616bd1b8e8f5b392296a040b06e55f5bcdb"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileManagerImpl.destinationOfSymbolicLink (cognitive 16): _FileManagerImpl.destinationOfSymbolicLink has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13 (15 pts), match/switch 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6d445485cfeee614f119ac5cea6c3ad7805ed5bd967f8c1331dfbb9b9aab843"}},{"ruleId":"D2","level":"warning","message":{"text":"__JSONEncoder._asDirectArrayEncodable (cognitive 16): __JSONEncoder._asDirectArrayEncodable has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7f35c540b9d7edbc322cf1dae490fbccc27df6fbffbd761ecd80370ed824e37"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgressFraction.* (cognitive 16): ProgressFraction.* has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 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":"Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"37810adda77fb18d7c070913b3ffdea7485ec026ea69e99848cef3be915bec0d"}},{"ruleId":"D2","level":"warning","message":{"text":"XMLPlistScanner.parseNumericEntityReference (cognitive 16): XMLPlistScanner.parseNumericEntityReference has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1324}}}],"partialFingerprints":{"codehealthFindingId/v1":"828565cd31ec3656d41cb6a8fd5780d8137adf136c6a39cc5dad1929e37bf9e1"}},{"ruleId":"D2","level":"warning","message":{"text":"RFC3986Parser.validate (cognitive 16): RFC3986Parser.validate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (16 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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"b91b0ae5f81bfa05f7e0de70625c43092eee40c39e29f3e045585fa575139b52"}},{"ruleId":"D2","level":"warning","message":{"text":"RFC3986Parser.parseAuthority (cognitive 16): RFC3986Parser.parseAuthority has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":892}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed7a20ee974ea7d5f813fa02ba44e0a29e1b496a3322f6ded38bce3c57ee567"}},{"ruleId":"D2","level":"warning","message":{"text":"Iterator._specialFind (cognitive 16): Iterator._specialFind has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (15 pts), match/switch 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/SearchPaths/FileManager\u002BDarwinSearchPaths.swift"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b44928a75dedeb67255992754ffc745fa65afa802041b7597daa8f6d57dd30b"}},{"ruleId":"D2","level":"warning","message":{"text":"PredicateCodableConfiguration._allowType (cognitive 16): PredicateCodableConfiguration._allowType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, 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":"Sources/FoundationEssentials/Predicate/Archiving/PredicateCodableConfiguration.swift"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"8493d88e8b938ee5e7255c230dcc4b337685d428839a62ccdfb758d492c52194"}},{"ruleId":"D2","level":"warning","message":{"text":"Guts.enforceAttributeConstraintsBeforeMutation (cognitive 16): Guts.enforceAttributeConstraintsBeforeMutation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ca75f30ed80e845b9a46c702e5d70e37fdc0be226e1c475012ac933133ddb3f"}},{"ruleId":"D2","level":"warning","message":{"text":"Guts.fixScalarConstrainedAttributes (cognitive 16): Guts.fixScalarConstrainedAttributes has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 2 (6 pts), boolean chains 1 (nesting depth added 8). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f416db6f87e2239fe5a0c49eb56d0181cebf9c7e18762d1307978c2c2b44f45"}},{"ruleId":"D2","level":"warning","message":{"text":"FixedWidthInteger._convert (cognitive 16): FixedWidthInteger._convert has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), ternaries 2 (4 pts), boolean chains 2, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"d86c1e1c3b8d1d8a14cb9dddb39d7953bd36617b4df9c07b54438e87ae4f5b44"}},{"ruleId":"D2","level":"warning","message":{"text":"ISO8601FormatStyle.format (cognitive 16): ISO8601FormatStyle.format has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 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":"Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1970e80e89c60d459717b2425b12be82d1285f8e76d4197220e9f6fe3b6075a"}},{"ruleId":"D2","level":"warning","message":{"text":"OpenStepPlist.swift.parseU16Scalar (cognitive 16): OpenStepPlist.swift.parseU16Scalar has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 3, 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":"Sources/FoundationEssentials/PropertyList/OpenStepPlist.swift"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"5944a264ca147cae3f615d0aed486de3a762af23d1dc80c0f1341f25bd8ffa0e"}},{"ruleId":"D2","level":"warning","message":{"text":"_LocaleICU.measurementSystem (cognitive 16): _LocaleICU.measurementSystem has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 1 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1537b4407fc0197f256bdbebe001ab755b90285c094625f860969c9d6d97986"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Data._computeGoodSubstringShift: MethodTooLong \u2014 _computeGoodSubstringShift runs 505 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 405 over it, 5.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":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"a569d55938761fd2ebfb0656eabec507210b659c61b9d8abd8bf7a33ef55d613"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Data.base64EncodedData: MethodTooLong \u2014 base64EncodedData runs 505 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 405 over it, 5.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":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32e9e58f01be0daf3df5017aed8eb06d3ffe8e088724fcf39bfd86500b6c86f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/Calendar_Gregorian.swift: FileTooLong \u2014 2182 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1682 over it, 4.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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea1a9e3d99421d143ac7e2ff55c6a6f9832d4af096ac62e32f7721a3653f07f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _CalendarGregorian._ordinality: MethodTooLong \u2014 _ordinality runs 382 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 282 over it, 3.82\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"110876cd4a8eece20e9fa6b1875e0d68b05c232404620a7722937648d356f787"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: FileManager\u002BDirectories.swift._mkpath_np: FunctionTooLong \u2014 _mkpath_np runs 361 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 261 over it, 3.61\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BDirectories.swift"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ae2e150521821dd3f9e4d02529ff804c72df83caf4333f4fd97db490370011"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Calendar: TooManyMethods \u2014 104 methods. The bar is 30 methods; this is 74 over it, 3.47\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a439e6307dcf96d46baae30f1a085e8481242852b68a135529cf5991f6087b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Data: TooManyMethods \u2014 98 methods. The bar is 30 methods; this is 68 over it, 3.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"24af7dfa8a39cd9fd91ac248fa5a6e6659bd75a538e6817dd969c73bce48a05d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: URL: TooManyMethods \u2014 98 methods. The bar is 30 methods; this is 68 over it, 3.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"599329d7795bbbdd6e60118842c1ffacfcffd33eca58ab080ea531fc08d8505b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/Calendar_ICU.swift: FileTooLong \u2014 1588 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1088 over it, 3.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6006613ee9a847ab0b34de331a29d3bef39839261bb6a982e219afc1a77d54e6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProgressManager.updateIntSummary: MethodTooLong \u2014 updateIntSummary runs 300 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 200 over it, 3.00\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb3942d5c993549d6e628f014279fc9dac5c0689b78e4c6350d6c065c2f4d86d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: POSIXError.init: MethodTooLong \u2014 init runs 283 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 183 over it, 2.83\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Error/ErrorCodes\u002BPOSIX.swift"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f2ccfeefda025714a4e4fc5b6aaf39ca09fc280df5fac5175e591ad74aa1ece"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/Calendar_Enumerate.swift: FileTooLong \u2014 1364 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 864 over it, 2.73\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c11fb83094eaed5d1d12d79a4575b22fa8d9e8a470c41f88dee20876dbe09109"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Locale/Locale\u002BComponents.swift: FileTooLong \u2014 1304 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 804 over it, 2.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":"Sources/FoundationEssentials/Locale/Locale\u002BComponents.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"943c6f3f95f8df575a84e14c50f9b10d392b9d457849611df3afe77b577f9a85"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Decimal: TooManyMethods \u2014 78 methods. The bar is 30 methods; this is 48 over it, 2.60\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"f83cf51e2e0c5e75cf0d83c08dc4a3fe66c686cc96bf240de185e37b0b531312"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NSURL.__swiftParseFilePath: MethodTooLong \u2014 __swiftParseFilePath runs 255 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 155 over it, 2.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":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e146b7ac1a18cb68f5d1938996ee5410d35f3e68aafffecc32a1177d157993"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: URL.withFileSystemRepresentation: MethodTooLong \u2014 withFileSystemRepresentation runs 255 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 155 over it, 2.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":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4144fef6230580a09be14d575cba8027a368612dd33987e30c2fca4a289ed77"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SortDescriptor: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/SortDescriptor.swift"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"093a10421805f082fc7e40209b197478dd1c17bfa297532b6712101277ca4a0c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _CalendarHebrew: ClassTooLong \u2014 951 significant lines (blank, comment-only and punctuation-only lines excluded), 35 methods. The bar is 400 significant lines; this is 551 over it, 2.38\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8e50b48468e97527b32f24b8841f7bbcd190caec015964bf7b240394fa177b2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/Calendar_Hebrew.swift: FileTooLong \u2014 1134 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: _CalendarHebrew (22-1442). The bar is 500 significant lines; this is 634 over it, 2.27\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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"86519847577aca79a7c7b9f48468408ffa8fd08a028e6cc12793feb458788b21"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: JSON/JSONDecoder.swift: FileTooLong \u2014 1085 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 585 over it, 2.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":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a24e5166e36b1b34b07860860300467b7c5892be328774586c90d880144a017"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ProgressManager: TooManyMethods \u2014 65 methods. The bar is 30 methods; this is 35 over it, 2.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager.swift"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff1b663015aa95b7764b0aebe1bc39db0eae133da25a0c86314b649bc2671cf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Region.continent: MethodTooLong \u2014 continent runs 213 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 113 over it, 2.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e47f9cb25f90f4bb7a165d3eb1519c1f71acf1707b3bb17990b4b0376d22a48"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Calendar: ClassTooLong \u2014 845 significant lines (blank, comment-only and punctuation-only lines excluded), 104 methods. The bar is 400 significant lines; this is 445 over it, 2.11\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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c2fab2bf13e9fbf2155e53a2f4b2a6fc075947970cc7b33e74ef86ff3a7a198"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _LocaleICU: ClassTooLong \u2014 844 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The bar is 400 significant lines; this is 444 over it, 2.11\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":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"f79790cfb1f1f7ca979c54be94c71ce6a62338b47ec848c8c7999d8ac8b69ea3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UInt32.COMPUTED_COMPONENT_PAYLOAD_ARGUMENTS_MASK: MethodTooLong \u2014 COMPUTED_COMPONENT_PAYLOAD_ARGUMENTS_MASK runs 210 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 110 over it, 2.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":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ed8824543cd934b247d89cbe6449a4e236f5c503e492d1eef52ecb68fd0edc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UInt32.COMPUTED_COMPONENT_PAYLOAD_SETTABLE_MASK: MethodTooLong \u2014 COMPUTED_COMPONENT_PAYLOAD_SETTABLE_MASK runs 210 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 110 over it, 2.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":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6bd04f93be06c94e10b039270bdc4ed4e0ccad2ac0064dec1c478c08f8bb6c8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UInt32.STORED_COMPONENT_PAYLOAD_MAXIMUM_INLINE_OFFSET: MethodTooLong \u2014 STORED_COMPONENT_PAYLOAD_MAXIMUM_INLINE_OFFSET runs 210 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 110 over it, 2.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":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f95d73a1456f9c161e04b319240d48fa89615b829951066157c46b037207e5e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UInt32._keyPathHeader_bufferSize: MethodTooLong \u2014 _keyPathHeader_bufferSize runs 210 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 110 over it, 2.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":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09f5ef49fec6adae78cbafc4d7c138e352dc0c5bae2280a45c215196b18eb1d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UInt32._keyPathComponentHeader_kind: MethodTooLong \u2014 _keyPathComponentHeader_kind runs 210 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 110 over it, 2.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":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12500459be744e3a978bbd745ff0d20a4168fd788c47a897eea433aabc77d36"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RegexComponent.dateTime: MethodTooLong \u2014 dateTime runs 209 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 109 over it, 2.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":"Sources/FoundationEssentials/Formatting/Date\u002BHTTPFormatStyle.swift"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"80071f300f32bba3610db7fff2856ce7a507a35544d9c1a65428f93fdda8ab31"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _CalendarGregorian.addAndWrap: MethodTooLong \u2014 addAndWrap runs 205 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 105 over it, 2.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2526}}}],"partialFingerprints":{"codehealthFindingId/v1":"620f8efad4fabbfbd228c6131c8aaf72768f7549ff494029b9bac09f45cee470"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Data/Data\u002BBase64.swift: FileTooLong \u2014 1020 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 520 over it, 2.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb7fd13bbffbfa834663e118e276ddcdc1182e78c8907a762e447a3dd1bae3ff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/Calendar.swift: FileTooLong \u2014 1019 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: Calendar (22-1612). The bar is 500 significant lines; this is 519 over it, 2.04\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":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64bf79060aa17202f349eac440112d0ec64df704922752bf6b02dc297dcd2d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: PropertyList/XMLPlistScanner.swift: FileTooLong \u2014 1019 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 519 over it, 2.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eae6f598067fba6e8174c45fdcb42e93d6ca50f3483075f73d3a5eee053c2b1b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: String: TooManyMethods \u2014 60 methods. The bar is 30 methods; this is 30 over it, 2.00\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":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee568b842c695107c09203dcd3bc31a59e27bf896152536f542d0fd22ec5535"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Locale/Locale_ICU.swift: FileTooLong \u2014 996 significant lines (blank, comment-only and punctuation-only lines excluded), about 85% of them inside a single declaration: _LocaleICU (36-1488). The bar is 500 significant lines; this is 496 over it, 1.99\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6399e88e843e19194c9c1a12e02c9a1ee9def8b165779573f162534294561c9f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Locale: TooManyMethods \u2014 59 methods. The bar is 30 methods; this is 29 over it, 1.97\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":"Sources/FoundationEssentials/Locale/Locale.swift"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf729185815f22f26ecc8ee9a21e53e07ab9bea913560ce420d948345ef072a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: URL/URL_Impl.swift: FileTooLong \u2014 955 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 455 over it, 1.91\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b907769e3c8f7a6cb6520ce9ea20b45060bfa7149483b110f944ceb30b3242b2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _URL: TooManyMethods \u2014 55 methods. The bar is 30 methods; this is 25 over it, 1.83\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ce1f127a54017f0fc218e984ffbe6a67b27640cfeeeef9a1ca473725a32410"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Decimal/Decimal\u002BMath.swift: FileTooLong \u2014 912 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 412 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":"Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d26efe76c5058298aca6e4fe631d196402bd7d5e6ae87fee12aadacef2ed6002"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: JSON/JSONEncoder.swift: FileTooLong \u2014 906 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 406 over it, 1.81\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b27b7e8349f85167c297a29d06bdbfa412b9f2db2ab36973b8b0e1d6e253b3e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AttributedString: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"10c1f7b8fcf3a7e08dd8684261c3d8984684aec91165cb10c9529bebafef00bd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: URL/URLParser.swift: FileTooLong \u2014 897 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 397 over it, 1.79\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb059c3a57411ca312f07d6891b6aa8b692303b202b47179d085878dd2b8a9dd"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: URLComponents: ClassTooLong \u2014 716 significant lines (blank, comment-only and punctuation-only lines excluded), 28 methods. The bar is 400 significant lines; this is 316 over it, 1.79\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":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e696afef4c4d9c1d4b459dd340219989a275e56706e837fb380c2efe9762143"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _CalendarGregorian: TooManyMethods \u2014 53 methods. The bar is 30 methods; this is 23 over it, 1.77\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd61a4b13f337732f019c9240f5f333233a5b5d7ff5adcc94e05b5f52aeeb680"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Date: TooManyMethods \u2014 53 methods. The bar is 30 methods; this is 23 over it, 1.77\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Date.swift"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"be5913cf5a49454b93bda77aebf2e1aaa5079861808d8278d67d172067b36336"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: JSON/JSONScanner.swift: FileTooLong \u2014 880 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 380 over it, 1.76\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"245906ff7adfaa0b551978a1388e3a90af2b4f6c745a879674ac29b86d581d21"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: FoundationMacros/PredicateMacro.swift: FileTooLong \u2014 869 significant lines (blank, comment-only and punctuation-only lines excluded), about 62% of them inside a single declaration: PredicateQueryRewriter (413-1138). The bar is 500 significant lines; this is 369 over it, 1.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":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75dca71ea97fa470c30749206423920a9e6d7cd2e2553acc695c478c16d7450"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: URL/URLComponents.swift: FileTooLong \u2014 866 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: URLComponents (21-1214). The bar is 500 significant lines; this is 366 over it, 1.73\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0939452bd3f1574b2f40ea342cbe512f097fe3da9be865885b014c797edb2149"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: URL/URL.swift: FileTooLong \u2014 853 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 353 over it, 1.71\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ae26b669f4f7db0e22d59e6aae862332486d3a4ff810724d39ee43f180d3fc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Guts: TooManyMethods \u2014 51 methods. The bar is 30 methods; this is 21 over it, 1.70\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc5f7a5406c3571c46e4df1e35e10fbf6d9cf2fc698449b4e09f8169dcb95b4c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _FileManagerImpl: TooManyMethods \u2014 51 methods. The bar is 30 methods; this is 21 over it, 1.70\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"00aaad316bf937b793c6365eec679f3cfb05107fb7054c383de03f2df6c31557"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: FileManager/FileOperations.swift: FileTooLong \u2014 838 significant lines (blank, comment-only and punctuation-only lines excluded), about 75% of them inside a single declaration: _FileOperations (328-1321). The bar is 500 significant lines; this is 338 over it, 1.68\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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee0b3bf3442e168581fa4e4f094491f678dc4c68035facbc868a2a509b01a91d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PredicateQueryRewriter.visit: MethodTooLong \u2014 visit runs 167 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 67 over it, 1.67\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"f26c914ffc9dd10572a083b41084214e9ecc4289dd822ae1ad8fa06cbe6fe7f9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: __JSONEncoder: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"add5568d7783ae7c4e2f0a4bcee01fbe2586db4bce44621e0e17968c348f984c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: URL/URL_Swift.swift: FileTooLong \u2014 832 significant lines (blank, comment-only and punctuation-only lines excluded), about 79% of them inside a single declaration: _SwiftURL (29-1055). The bar is 500 significant lines; this is 332 over it, 1.66\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f625edca99ef162fda1f5c1f245e3dca3765efbb7be76414d7c985dfc1b5dbe"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _SwiftURL: ClassTooLong \u2014 654 significant lines (blank, comment-only and punctuation-only lines excluded), 49 methods. The bar is 400 significant lines; this is 254 over it, 1.64\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":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"3960c4fff6b9fb30b3a184845a9d8b9f01bded190f46c547af6eafeec57e512c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _SwiftURL: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"46b23ca8519c3e13aa2acfc466b61d8c64059a486025818e93da2377b447c980"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: JSON/JSON5Scanner.swift: FileTooLong \u2014 812 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 312 over it, 1.62\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3778f8ba8a49a52a0ea81b055a7e41248b802f8592429b426f0f1682d3c61903"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UnicodeLookalikeTable.allCharactersAllowedByTLDRules: MethodTooLong \u2014 allCharactersAllowedByTLDRules runs 162 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d0325e0eff1d36a876bd72c68f08f2e95f2151f3a373ff70af655217f47af4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Data\u002BWriting.swift.writeToFileAux: FunctionTooLong \u2014 writeToFileAux runs 161 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 61 over it, 1.61\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05a3e6bde71c278f0432373f9122982cad8f294a9c6f7aa5200929b18b68a0a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UnicodeLookalikeTable.isLookalikeScalar: MethodTooLong \u2014 isLookalikeScalar runs 160 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 60 over it, 1.60\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb1672b374529901dcc64bcb73b77691ace88e8205f945aed2461528aa43223"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _CalendarChinese: ClassTooLong \u2014 633 significant lines (blank, comment-only and punctuation-only lines excluded), 35 methods. The bar is 400 significant lines; this is 233 over it, 1.58\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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7c5bef1cbcbc88d12cd63f9d50caf1616f31aad39830595ba10755ea224e8b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _FileOperations: ClassTooLong \u2014 628 significant lines (blank, comment-only and punctuation-only lines excluded), 12 methods. The bar is 400 significant lines; this is 228 over it, 1.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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef89d415794a4a9410821522188f0e842bf4e57b12c3d219a1efd962d355e2e0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/Calendar_Chinese.swift: FileTooLong \u2014 780 significant lines (blank, comment-only and punctuation-only lines excluded), about 81% of them inside a single declaration: _CalendarChinese (182-1026). The bar is 500 significant lines; this is 280 over it, 1.56\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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7091168160d60d11743ff1509b5c5b79af9c8aac7b059a1ac645f33d0e7deade"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StringProtocol._convertingSlashesIfNeeded: MethodTooLong \u2014 _convertingSlashesIfNeeded runs 155 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a0da10d0ac3238a91a4a4eb0c97b2f0a913cb64b4aaca72c834da3942962d8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FileManager: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/SwiftFileManager.swift"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"004f6bd1d2a24526c79d120a618bb7446c4747dc29878e014a0587f2aa05de6b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StringProtocol.capitalized: MethodTooLong \u2014 capitalized runs 153 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 53 over it, 1.53\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"47164cdf491e8706fc6849fd4c488c8a59b59a3b52afb3ef70f075f3c19ca3f7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _FileManagerImpl.contentsEqual: MethodTooLong \u2014 contentsEqual runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BBasics.swift"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa5a9db2997deaf71df864a82d30259113195f0b2bcbdfa8e543ff2a98e304f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: URL_Resolution.swift.resolveDotSegmentsInPlace: FunctionTooLong \u2014 resolveDotSegmentsInPlace runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Resolution.swift"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"af05f1977eaa40ee18045a73ab06bc2902772987be65943c71e69c64f8e1184a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _PlistKeyedDecodingContainer: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDecoderGeneric.swift"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1d636d61b7e25e0c3adb190535fa54c17c98dd6b94a099f773e967a340bc2fa"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/Calendar_Recurrence.swift: FileTooLong \u2014 744 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 244 over it, 1.49\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Recurrence.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d6bc3fe6c75000f53f42452db5db111b3db4e920d853b93b008b7f1f34b9fbc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: PropertyList/BPlistEncodingFormat.swift: FileTooLong \u2014 733 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 233 over it, 1.47\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5192c0b3ffbb69fa0feb955ccdb084eff05d2ba16681595965da46156f20c3ad"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Base64._decodeIgnoringErrors: MethodTooLong \u2014 _decodeIgnoringErrors runs 146 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 46 over it, 1.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"15848b9706b6718a792b06495667ce906ea945e2a039c16fb06faeaf8acfd8ed"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Data\u002BReading.swift.readBytesFromFile: FunctionTooLong \u2014 readBytesFromFile runs 145 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 45 over it, 1.45\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d99306fd2abdfd26d1323158d7df38cd67c168499b86225457b19a4b2be4b6a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSONDecoderImpl: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f60e532c05a104ba04f37f65d3e4eaff84d607a43cc555ada6002c6467f2be9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _PlistUnkeyedDecodingContainer: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDecoderGeneric.swift"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac2d11ac0e9c19c38bad5b93914ccf83a91a4ae4e963fe60135344a007fa515"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: __PlistDictionaryDecoder: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c6140c2319ade96d316c3e774cf75c65e7f9c26e862afc866d2681e1e7e6be5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: URL/URL_Parsing.swift: FileTooLong \u2014 699 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 199 over it, 1.40\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Parsing.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0c92b46719638d941261109f7eb8332f7945e79ac240d9137efbe16e985239e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: FileManager/FileManager\u002BFiles.swift: FileTooLong \u2014 693 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 193 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":"Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5322a3e51fd74fda9c7305dd7a2d25a243a515df99576b101f5df9a0487f07b7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: __PlistEncoderBPlist: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"5182663741de242e8ee25c23eb7f9d9d5c221238780a1f78e4e6b251e52b6930"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: __PlistDictionaryEncoder: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryEncoder.swift"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd8c7c292976c0140ddd701857714cd25e3cce06c865a918d273449b296abc7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _NSSwiftCalendar: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"292829a806f21f3ee96704009b92d786cafa4a933d7707db40c2929e157cfb03"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: AttributedString/FoundationAttributes.swift: FileTooLong \u2014 681 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 181 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":"Sources/FoundationEssentials/AttributedString/FoundationAttributes.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"311c89be30312cb5ee15e0866fb982bd144cc101bd8c5b20c6d3e9b94a92cc9b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PredicateQueryRewriter: ClassTooLong \u2014 535 significant lines (blank, comment-only and punctuation-only lines excluded), 32 methods. The bar is 400 significant lines; this is 135 over it, 1.34\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":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"6107c7fad7692298bee6ae34eb38a399ff992e6805db57cfb9c896835d3ff445"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: __PlistEncoderXML: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b413c1e875c6b7b02b752ad1141e10daeb27e43e7f575b072bbe1a44a92e50"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Data/Data.swift: FileTooLong \u2014 665 significant lines (blank, comment-only and punctuation-only lines excluded), about 75% of them inside a single declaration: Data (131-1137). The bar is 500 significant lines; this is 165 over it, 1.33\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":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"437fed3a49771f7bbc1255930c94fa887db01e61d3277b22b83d506d93c75669"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: PropertyList/XMLPlistEncodingFormat.swift: FileTooLong \u2014 660 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 160 over it, 1.32\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"89874c67ce93a199bf1471d4b919ca92d1a8fbe81836d60b5fd95c604dd8e84e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _FileOperations.moveFile: MethodTooLong \u2014 moveFile runs 132 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 32 over it, 1.32\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"473e19ba8d04af5d20094c049995a33a0292606531b289caed57efd3e90959c1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift: FileTooLong \u2014 653 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 153 over it, 1.31\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5d4f50b5f64040843e082756f69d881350308bfc31d64aca56f3b7488295841"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Date/DateFormatStyle.swift: FileTooLong \u2014 639 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 139 over it, 1.28\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Date/DateFormatStyle.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"011dba5d7cbcb7155e152ec31a22db0b37e6d5bb1a1b52dfa6ae9e45ddbb3c90"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Value.text: MethodTooLong \u2014 text runs 127 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 27 over it, 1.27\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a111873b39f5ea203e6fe56ad51cb3eb7875b2172c98aed44bbc8aaef8564262"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Data: ClassTooLong \u2014 500 significant lines (blank, comment-only and punctuation-only lines excluded), 98 methods. The bar is 400 significant lines; this is 100 over it, 1.25\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6828c7fd10f52ed8969136f8a319d50234bb256cd7a546331ba846f382b1a5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Number/NumberFormatStyleConfiguration.swift: FileTooLong \u2014 621 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 121 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":"Sources/FoundationInternationalization/Formatting/Number/NumberFormatStyleConfiguration.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebf9e6c5051967cfcb1f68e07df3bdc99f8971a6dbcb57dda29fb700865e57f7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _NSFileManagerBridge: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 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":"Sources/FoundationEssentials/FileManager/FileManager\u002BBridge.swift"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12cf3d084900ff3657b1e24d3467b301347e2ac29e68259ce11d52adbb6bb4d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RFC3986Parser: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f1a179679418144d96ee54b6807291ed8f9b7a4513793ddfe6924294f835b7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _CalendarGregorian._dateComponents: MethodTooLong \u2014 _dateComponents runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b65170f25de1e8ae4176905ef826a04815637f96ffa1b7a4a7b6f511617e66"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Date/DateFieldSymbol.swift: FileTooLong \u2014 607 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 107 over it, 1.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Date/DateFieldSymbol.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1edded7282b0f7b1012da969ef777e692967d570080f0801ec481d6db92c5eda"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BufferView: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4dfaa3de1c3bfff15849243731cf81612fbbbf17ed4d8acc0c7aaa4ea3089a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StringProtocol.localizedLowercase: MethodTooLong \u2014 localizedLowercase runs 120 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f77cb4b70ff2471c28702cf8a8ad54941ed59e5d6e89e2dfd678ae3c530b518"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SortDescriptor: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. 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":"Sources/FoundationInternationalization/String/SortDescriptor.swift"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4ae3274a15ef4a3d367218dd87d48e48211391b1cb04feed66eb8d3022f45fb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RFC3986Parser: ClassTooLong \u2014 472 significant lines (blank, comment-only and punctuation-only lines excluded), 37 methods. The bar is 400 significant lines; this is 72 over it, 1.18\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":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"1056880534725a918b9954738d4b46478b598c42b40944e7aade6a5eeee30b6f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _CalendarHebrew.date: MethodTooLong \u2014 date runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"63101d9a3523a1c08d9e8aac454d8b83cef957d5993ffe4eeede145afa4c594b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _CalendarChinese: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb90cbe68cc663f5736fdc094beac4b2902c0d8dd8319f82d48bcdd30bba3cf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _CalendarHebrew: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"aec6ad96c3bfbfa867ec0d287d6925e8bbbe20224649a97ad8511afc800fb49b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: IndexPath: ClassTooLong \u2014 456 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. The bar is 400 significant lines; this is 56 over it, 1.14\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/IndexPath.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"19b60d051fafe5517f7b27748cf75f9827a3373b66cd7d3cd0cafe38a934be06"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: XMLPlistScanner: ClassTooLong \u2014 454 significant lines (blank, comment-only and punctuation-only lines excluded), 25 methods. The bar is 400 significant lines; this is 54 over it, 1.14\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"5efafee98d1e07a68867130685043cc49e28aa85df6970e3a0204dfb478dd502"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: IndexPath: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/IndexPath.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"997544c6a7218400e8091eb90dc52c2de33b6a5aaf64a6f00096dd4982054f75"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _BridgedURL: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Bridge.swift"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"24b62f0633614acaf3355b40095f09cb8d032fc0662298c2bb5784f1b9dcdcb6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: PropertyList/PlistDictionaryDecoder.swift: FileTooLong \u2014 553 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 53 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db947c506ea5b9ff04a5caa65b84c27a7e9397ef8e4d36f87017eba58469dfff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Data/Data\u002BWriting.swift: FileTooLong \u2014 551 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 51 over it, 1.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":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07cf8c52aaff32ae3f66f6943254f9079a438b30f9757a31b6a0e9d6df1646df"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _CalendarICU: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"286ff290f6cf5d6b23c108b89ca759413fd07e19fb7e690826aa90c35cefcc5b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _CalendarChinese.date: MethodTooLong \u2014 date runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa862f6df697ed87ca8b7ad43b66d528eed59d764644b2c584db4e8eaad47d7c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _CalendarGregorian.add: MethodTooLong \u2014 add runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"4685e740497a84ca8d402628e42adec2cc77a4064d45096ab707c0b0837e9c9e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: FoundationEssentials/IndexPath.swift: FileTooLong \u2014 547 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: IndexPath (21-668). The bar is 500 significant lines; this is 47 over it, 1.09\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/IndexPath.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57cce9177c6830540a2c5acba2fe3a03620de99ec4b63f1d98752dd38312d392"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: PropertyList/BPlistScanner.swift: FileTooLong \u2014 539 significant lines (blank, comment-only and punctuation-only lines excluded). 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":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d55f29629848d8f32a275579e078fe9b67c418aeec3c6e2fd076dac8d49ce2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Calendar/DateComponents.swift: FileTooLong \u2014 536 significant lines (blank, comment-only and punctuation-only lines excluded), about 61% of them inside a single declaration: DateComponents (21-533). The bar is 500 significant lines; this is 36 over it, 1.07\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1cc3f6236b2fb2f8366d361378f754e643964d946a6a23f0ba5a3a057cd8538"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _PlistDecoder: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDecoderGeneric.swift"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd120d6323036e54855a84f215d80349e630ac7c37c5a8a15fe5a1d22f911b0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TimeZone: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/TimeZone/TimeZone.swift"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"50fc59b47ca4bfde8955ad5914e8e5e9a36b74fa3d72eb924d5dcc286e9d1de8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PredicateQueryRewriter: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed799d567f26de3c52c9b100f4f02d4d23b0ba2bb8f957f730fc1e6899a93fb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RegexComponent.date: MethodTooLong \u2014 date runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"Sources/FoundationEssentials/Formatting/Date\u002BHTTPFormatStyle.swift"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb3c4ecf3b537e3df2a35ae9d8a68328b8ec16d5583efad3c8ba96e3cfd6be42"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: String/SortDescriptor.swift: FileTooLong \u2014 523 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: SortDescriptor (19-1159). The bar is 500 significant lines; this is 23 over it, 1.05\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":"Sources/FoundationInternationalization/String/SortDescriptor.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f843307474a50226254069e2638a6631547585ca6762d5318d3d3f7e0bd45fe"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _CalendarHebrew.dateInterval: MethodTooLong \u2014 dateInterval runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"763426be8c8b01796ec9d125630ff15381ed39336d6367bd28f48a8248c3826e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: __DataStorage: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Representations/DataStorage.swift"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3ba8fdd1bd8005bf15a0668ebbc36fb5020a85a8d2cb9c02bfcbe138f2965e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: String/String\u002BPath.swift: FileTooLong \u2014 511 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 11 over it, 1.02\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BPath.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be90acd8edd770293b61da3abdccfda04cf173ae3ea73e966be5d31b809e86d5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Calendar.compare: MethodTooLong \u2014 compare runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1894a192c5526fff76c70414dae5cff1547de2c12436f9d968a501c81a28a1d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Int.clampedPadding: MethodTooLong \u2014 clampedPadding runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":810}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d0e48c2785f8110bb40cbc4b6925c368c6bb6a6e4c9178eb2a499974273ca8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift: FileTooLong \u2014 505 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 5 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94adcf2eda953362038aef0cf404e9a54e2b8ece7705c7a90ebbe0203e908cd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 5 shared lines): Sources/FoundationEssentials/URL/URL.swift:783-790 | Sources/FoundationEssentials/URL/URL.swift:799-806 | Sources/FoundationEssentials/URL/URL.swift:816-823 | Sources/FoundationEssentials/URL/URL.swift:830-837 \u2014 These 4 members are variants of one another: a block of 5 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"307fda6c44b18db27265c311b2821b4abbad48bc6dd1a419a4f38b0a331f655b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (64 shared lines): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1382-1501 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1503-1687 \u2014 These two members are variants of one another: 64 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1382}}}],"partialFingerprints":{"codehealthFindingId/v1":"487fbd6663506ed05bccbb5ba7d9a4d284d6abb3af8091cd905600079dc065a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (42 shared lines): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:665-761 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:612-741 \u2014 These two members are variants of one another: 42 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":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"88fe4f06e71eb7b850ecf98ca9c8a5eb0fe102a8171eabb8ab7e1ad690dd9187"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (27 shared lines): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1186-1237 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1293-1341 \u2014 These two members are variants of one another: 27 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":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3b1d8026e29999da93d2ef757125819077a5db010475f02009bab8852f5c813"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (33 corresponding lines): Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift:74-122 | Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift:124-191 \u2014 These two members are one piece of code written twice and then edited apart: 33 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"83398cc67a8f1b502701125cefe61cce6650fcc254294570fc5e6cfbfe41cdef"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (21 corresponding lines): Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:128-151 | Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:153-176 \u2014 These two members are one piece of code written twice and then edited apart: 21 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistEncoder.swift"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf36d95172d6225b95964084a04a935e6cfb623a272ae633944b2cd8806dbc26"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (6 corresponding lines): Sources/FoundationEssentials/URL/URL.swift:1297-1304 | Sources/FoundationEssentials/URL/URL.swift:1317-1324 \u2014 These two members are one piece of code written twice and then edited apart: 6 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":1297}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a87025f67446ec992d0006ad45724f8bfc14e656e604ed049e0ca7538722aed"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (6 corresponding lines): Sources/FoundationEssentials/URL/URL.swift:1237-1244 | Sources/FoundationEssentials/URL/URL.swift:1257-1264 \u2014 These two members are one piece of code written twice and then edited apart: 6 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2296d2760f2cdcc8fdedb8f0150ad7f3d733e3b5e209e66fe76906967cbe45f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (15 members, 50\u002B identical tokens): Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:134-147 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:149-162 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:164-177 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:179-192 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:194-207 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:209-222 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:224-237 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:239-252 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:254-267 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:269-282 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:284-297 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:299-311 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:313-326 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:328-341 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:343-356 \u2014 These 15 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 15 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 15 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"4175c2fb0edc6396d8aba9121ba1722e127db540c7fb8d8bab8cacc27c0bf2ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (15 members, 50\u002B identical tokens): Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:458-472 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:474-488 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:490-504 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:506-520 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:522-536 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:538-552 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:554-568 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:570-584 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:586-600 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:602-616 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:618-632 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:634-648 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:650-664 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:666-680 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:682-696 \u2014 These 15 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 15 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 15 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb0e1abfcdbb11c24d8b6458f663d69bc3f7497c37bf474a4996cb2edd461ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): Sources/FoundationEssentials/ProgressManager/ProgressManager\u002BInterop.swift:308-342 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:62-101 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:106-148 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:161-202 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager\u002BInterop.swift"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"82a401b2dac4769c3dcb67d15ab230199fc393b45227acbf9844e6658222cad7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:197-214 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF16View.swift:99-114 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF8View.swift:99-114 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift:188-205 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa40ac3194c788c17bf5136c1623b7f367d6df4a4b094cde49427632e15d111"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:126-151 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:161-193 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:204-243 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:255-301 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f8c189f79b56444a3509346b3d7bf9b4d1bf80f7f04869790f02ebae7fdfddb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 2): Sources/FoundationEssentials/URL/URLParser.swift:847-889 | Sources/FoundationEssentials/URL/URLParser.swift:1392-1434 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLParser.swift:847\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"04023f00089ee7ae3376e59dac8abccf4a39e287136caa9b4e6cb0fbf4f0a38b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar.swift:1490-1527 | Sources/FoundationEssentials/Calendar/Calendar.swift:1549-1586 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar.swift:1490\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1490}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8fab9ee10d8b5a38268f4b0b3a16d798557bc90aa4a5079384471d265af5032"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29\u201338 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:997-1025 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1403-1440 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:997\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4be6d96fef4b722dda34f9e3290137401e0a48773893af8f5ae96d89aef8ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:837-873 | Sources/FoundationEssentials/JSON/JSONScanner.swift:912-948 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f64b5e45677294198c5cfea9318ef1a06355b0af9531ab833a09fc23aeb67b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29\u201335 lines \u00D7 2): Sources/FoundationEssentials/URL/URLParser.swift:616-644 | Sources/FoundationEssentials/URL/URLParser.swift:1176-1210 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLParser.swift:616\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"e860c6169e7d61504980c28334a2a079bac336fe46a50a9c1bcec49253220c56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201334 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:325-350 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:498-531 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:168-201 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"4752e19494af65351a6f8f27cdba5b248293a70a134547b7603d52af1ffc958b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:240-272 | Sources/FoundationEssentials/JSON/JSONScanner.swift:491-523 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:240\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"a89c8a2d1a153bb7c24ed607bea8130ce8d5de1fc907324a26c41b5a831f4ddf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:274-306 | Sources/FoundationEssentials/JSON/JSONScanner.swift:525-557 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b70844a340a8538e8de8c4631e233fd27f744a023bdbb366ab3fa14a9f9dfb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): Sources/FoundationEssentials/URL/URLParser.swift:720-747 | Sources/FoundationEssentials/URL/URLParser.swift:1279-1306 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLParser.swift:720\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"295f3a167ebd057c53bd7abe93427f31317be23f685ed02404e3423cf84198e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201327 lines \u00D7 2): Sources/FoundationEssentials/String/String\u002BInternals.swift:361-387 | Sources/FoundationEssentials/String/String\u002BInternals.swift:475-500 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/String/String\u002BInternals.swift:361\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BInternals.swift"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"360d8d3e25aaafe8b1bf80c7a4a3a07b520fa7b0eff600f58989d216f6e4f98d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:1113-1137 | Sources/FoundationEssentials/JSON/JSONScanner.swift:1148-1172 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:1113\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad62a4593287bf027e374301d6de574607f6ef6797bf1f80f9e61a2343436da8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:885-909 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:956-980 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:885\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4485232baf811d410cf1de668e533d578b469170a4061297e64598328f55b37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:166-189 | Sources/FoundationEssentials/JSON/JSONScanner.swift:417-440 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:166\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"91e00439a3b8551de8f0995262b89e8ac8502a05f2cbafaf41c8c544f0f25fca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:812-835 | Sources/FoundationEssentials/JSON/JSONScanner.swift:887-910 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":812}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3b2ab19d4cd442ee1150165a13c98789c8b91e25aabf6866625ee34d9a59e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): Sources/FoundationEssentials/URL/URLParser.swift:814-837 | Sources/FoundationEssentials/URL/URLParser.swift:1363-1386 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLParser.swift:814\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d50b2f206e133a73c0efaeb84672a8efe53ee14c6ed97882f63d01be313536a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:1574-1596 | Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:1613-1633 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:1574\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1574}}}],"partialFingerprints":{"codehealthFindingId/v1":"b97a2908da2134b75cb09a75411d8b6bcbc172d11f9292f06095c2e01f7b435e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): Sources/FoundationEssentials/URL/URLParser.swift:894-916 | Sources/FoundationEssentials/URL/URLParser.swift:1439-1461 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLParser.swift:894\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6315a6eeb16bca84edd3664961afec231c41b1e7e3aa5a28de9782115ba4085"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1441-1463 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1561-1583 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1441\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1441}}}],"partialFingerprints":{"codehealthFindingId/v1":"45aa8d46b911343521c18d1be2d386da48eead90abc02bce687eda899e77da62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:1586-1606 | Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:1624-1644 | Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:1867-1888 \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":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1586}}}],"partialFingerprints":{"codehealthFindingId/v1":"b945b77b307a77b9122c393e167c2db6342d645648d4742737eb7653db50b83a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:277-298 | Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:301-322 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd1f081fb76f84650a06b1e583c9e31360be4236e3d52dffe2fa91c73170df80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:117-138 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:141-162 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c989905b1155e0677b4a9c11e66bd9d2844d8c798c3b029f9ed4f23d291d93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): Sources/FoundationEssentials/Data/Data.swift:411-432 | Sources/FoundationEssentials/Data/Data.swift:716-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Data/Data.swift:411\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data.swift"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"c966c37ba8682b76df1b41e10a6fe9051f9d0ebb07ff76b577d7d21a761af9f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:193-214 | Sources/FoundationEssentials/JSON/JSONScanner.swift:444-465 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:193\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"532bc7da5eb569c1b5e6bd66fd4cdeea74aa67b9712ac2f496fe213d1ffce6c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:113-134 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:168-189 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:113\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager.swift"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16e8f9751873dbfa043e8efd2a7f14db58ed422916a83de2e67a87d7c41dfd6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:897-918 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:747-768 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"063bd8a9eff4613a15e81d0de1631c1d66a77a9ca015a0eb66dca6f741b668a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201321 lines \u00D7 3): Sources/FoundationMacros/PredicateMacro.swift:508-528 | Sources/FoundationMacros/PredicateMacro.swift:569-587 | Sources/FoundationMacros/PredicateMacro.swift:622-640 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationMacros/PredicateMacro.swift:508\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"966f068edd60d410a4298b0912c63198f6f742800a8184d6cfad42471234e244"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201321 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:574-589 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:496-516 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0bae15c6b0339b1ab40718d83868d89f403061b4da55e778a4cf13be1a9df0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:977-996 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1379-1399 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:977\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59992f03eab0e751697c6a318fafa16d2268090ed411555c4fcfa51dd8956eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:2544-2563 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:2803-2823 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:2544\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2544}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b23c4cc5145691c9c168ce85ce73123878216f3d6ebf040f822fc0917d2b48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:513-533 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:497-517 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7a08216b20f659a2b2a0733c5f6f9e8d84cd6f17c6046bdec1c370891df5e08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): Sources/FoundationEssentials/URL/URLComponents.swift:554-574 | Sources/FoundationEssentials/URL/URLComponents.swift:578-598 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLComponents.swift:554\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"0242de7bf9a769ea277d2222522ea0983d083be4a9c1e3d981ebea4450d9b83d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 2): Sources/FoundationEssentials/URL/URLEncoder.swift:241-258 | Sources/FoundationEssentials/URL/URLEncoder.swift:488-508 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLEncoder.swift:241\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"85d6d6213d44825881c35e39494a10f9eaa9ef74b360550a8e2a0afc12306621"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_Bridge.swift:305-324 | Sources/FoundationEssentials/URL/URL_Bridge.swift:348-367 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_Bridge.swift:305\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Bridge.swift"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c3cb5e7ce1c61bd400660a788240d96642fcbf2928ba7cf9d3ad61f7dc7090d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:424-441 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:379-397 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:424\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f0fd66b55640e251ec59f8814bd9cce9818c3e6efc2f71a57a156db8632ae1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:96-114 | Sources/FoundationEssentials/JSON/JSONScanner.swift:342-360 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:96\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cc407b6234bac69536d0643d5df4392416a0e73ef9872ce9e27cc42ef68d77b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:75-92 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:121-138 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:176-193 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:75\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:118\u0060 calls \u0060access\u0060 and \u0060Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:72\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager.swift"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee8b8605fab627bd31eb9b1b467fd559324bec5cd46dd37d7b75cbacfc9f4257"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:119-136 | Sources/FoundationEssentials/PropertyList/PlistDictionaryEncoder.swift:116-133 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:105-122 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"4017a7817bb4e2f51f5e5d7d7dbc52cad78c1d4c927f499b6b46f86b34adadc4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 3): Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift:84-101 | Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift:383-399 | Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift:442-457 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift:84\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift:401\u0060 calls \u0060ByteCountAttribute\u0060 and \u0060Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift:103\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee11fb3b3e4a57ce02d2fa18c2b4aa0baccebaf3dfbe9a38a0222b199e35579"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:745-761 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:724-741 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:745\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"401ce8846f25adb29aed4243ac2a5fb54c1811674ab8565b990b6f8542d0c6e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift:23-40 | Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift:44-61 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift:23\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5628e718c6ad593ca047d744fd8be74265af2ec4ec7268a992c59390446e147"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201317 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:186-197 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:29-45 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:186\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note first that the copies are not typed on the same thing: the declarations holding them bind \u0060firstWeekday\u0060 to \u0060\u0022_CalendarChinese only handles .chinese\u0022) self.identifier = identifier self.timeZone = timeZone ?? .default self.locale = locale if let\u0060 in one and \u0060Int?\u0060 in another, and the duplicated lines use it. The extracted unit therefore needs a parameter type that fits BOTH \u2014 their common supertype where they have one, or a new abstraction over them where they do not \u2014 and settling that is the step that comes BEFORE the extraction above. Where the two types are deliberately unrelated, the duplication is the price of that separation and the honest resolution is to record the decision rather than to extract."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"cce983aaef50942e75de8aa7fdd32fc7d3e4b0cc41ae1de65a0f3cbf764cc114"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:2275-2289 | Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:2304-2320 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift:2275\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":2275}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bc4a5d5af0dba19a5e61fa5bb9f45531ac4fc821bf25b94d68cbc03f771c0fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:211-226 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:235-251 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:211\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager.swift"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d2f1906237a55cbe90788f60cef005d799586e5381db9753f87a178564b6b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:1067-1083 | Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:1087-1103 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":1067}}}],"partialFingerprints":{"codehealthFindingId/v1":"947cb301a24ab55b966a364d24ef55b7122eeafeeaaf91c31b10ac0fe979eac6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:131-147 | Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:156-172 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistEncoder.swift"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b0cd732476f93c2836bf192c3f15d709a47e643107bf0d9aa872ea596f8496f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): Sources/FoundationEssentials/String/String\u002BIO.swift:438-454 | Sources/FoundationEssentials/String/String\u002BIO.swift:461-477 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ed8e9f74ef95ab1567d48a4c2176c4d7cc48b50277b19a0876ce54b32f9e72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1483-1499 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1603-1619 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1483\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1483}}}],"partialFingerprints":{"codehealthFindingId/v1":"78fb05824d6eb18397965962fc012dd8a1a7abda04e2ef50b71c9a5ad6f65e9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 3): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:31-46 | Sources/FoundationEssentials/JSON/JSONScanner.swift:277-292 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:801-814 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2cd25403005e973a0e42f6c712a86992dd7fbbca4a0c8a5df6b681c81865144"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift:304-319 | Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift:336-351 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift:304\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7cd6048102f31617eb9240c1d35014367eb2a2b206e8a753f3ee6d05b6aa3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/ByteCountFormatStyle.swift:382-397 | Sources/FoundationInternationalization/Formatting/Number/NumberAttributedFormat.swift:53-68 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Formatting/ByteCountFormatStyle.swift:382\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/ByteCountFormatStyle.swift"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"c50feb6005070e24de20b62e6c6d5c23c8f1810e783b6c276bf7c39fc252d226"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 5): Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:423-437 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:443-457 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:461-475 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:480-494 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:499-513 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:423\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b4b3ec56f2083922f46382fb93ba84a8029c495dc10d0e0a818eb2d3ace79a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:905-917 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:884-898 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:905\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a83ad27c3b33667aa863bf46825a8fa604cfdf328f77bb5c8037afa101614b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:493-507 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:520-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:493\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"f34f08a19f48fe9b1eeaa04fab3daa92d6406fe805fc887fe32148363aaff9dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): Sources/FoundationEssentials/URL/URLComponents.swift:468-481 | Sources/FoundationEssentials/URL/URL_Swift.swift:1023-1037 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLComponents.swift:468\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"c33a9129170659a73a5f2c3b5ae010f15028f40977c1d2ffa139cc02e42c991d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): Sources/FoundationEssentials/String/String\u002BIO.swift:124-138 | Sources/FoundationEssentials/String/String\u002BIO.swift:151-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/String/String\u002BIO.swift:124\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"edaad6e286184e53a17b552dcad8a0cfe0f010a0d788c8754405c21ad646cede"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:326-340 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:356-373 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:326\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"4803b1614dc145cea703b345c915d4e52d294f71d08e6303aa527772b91ced83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201314 lines \u00D7 6): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1112-1124 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1240-1251 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1285-1298 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1327-1339 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1362-1368 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1389-1395 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1327\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1251\u0060 calls \u0060dateComponent\u0060 and \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1124\u0060 does not \u2014 after which the two agree again for 5 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1112}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa7f847fb6c041f8746a5684bd9da9858232260cc60057ea1d11ec9333c3de1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 4): Sources/FoundationEssentials/ProgressManager/ProgressManager\u002BInterop.swift:323-335 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:79-92 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:125-138 | Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:180-193 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/ProgressManager/ProgressManager\u002BInterop.swift:323\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager\u002BInterop.swift"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"99685b8100c824b774eacc9927e1d5a011475b82600ff795e9aa9e2568ea9edf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): Sources/FoundationEssentials/CodableUtilities.swift:360-372 | Sources/FoundationEssentials/CodableUtilities.swift:397-410 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/CodableUtilities.swift:360\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/CodableUtilities.swift"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd824a78cd619f0cdd66e3f661622015488bb8e4a13fc57f1a12c17fea8f6bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u201314 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1205-1218 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1253-1265 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1308-1310 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1205\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1205}}}],"partialFingerprints":{"codehealthFindingId/v1":"d791ceb8fc7751e7b7182806551708c119910cda1dde779138eeb32b91f7e512"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Recurrence.swift:1154-1167 | Sources/FoundationEssentials/Calendar/Calendar_Recurrence.swift:1171-1184 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Recurrence.swift:1154\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Recurrence.swift"},"region":{"startLine":1154}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee18626e1b5fe937b9f907d2731be060a2f9d08c87f0e63bb4f1416b503f352"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): Sources/FoundationEssentials/String/BidirectionalCollection.swift:41-54 | Sources/FoundationEssentials/String/String\u002BBridging.swift:325-338 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/String/BidirectionalCollection.swift:41\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/BidirectionalCollection.swift"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe426467047720dde2768cb4418874fc319ce69fcde56b6ac55f85e0221e73d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:2374-2386 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:2395-2406 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:2410-2420 \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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2374}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d72ae8d1817368e8cc3fd262a10501bba0d64471b0e56240c7c20900bcc9e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 3): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:863-875 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1054-1065 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1075-1086 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:863\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"435a62bb635a0c9b0a0929bdb059d52fce2bc4710993539cddbcfe9ceaf23ceb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar.swift:157-169 | Sources/FoundationEssentials/Calendar/Calendar.swift:190-202 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar.swift:157\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5fc2b1dee1419699c1e46058afe6dc8cd1d8b1c60a025f61d501c8b60d0916c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:731-742 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:709-721 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:731\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c53c88b97610ef3a82582f776cfb934ae46ebd7ef0674f49e56f869bf8a8d8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1225-1237 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1329-1341 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1225\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1225}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaeac5a0b97d4d785c842ad00f366d8576cb16e2a67c8f93acbb34091946111d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:1160-1172 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:1179-1191 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b39dce756e471b1005d96c0ef2bc6c1783d8eea52615451afd502082039d81b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): Sources/FoundationEssentials/URL/URLParser.swift:644-656 | Sources/FoundationEssentials/URL/URLParser.swift:688-700 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4447c548565997ca29ca140a46d6eeec4f5de6ae62270823ad94d385c81662e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_Swift.swift:371-383 | Sources/FoundationEssentials/URL/URL_Swift.swift:389-399 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b370bceeba250c3c95f55144926ba5ee25ab91595a4b80967bcbaf6726cabcd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:183-195 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift:174-186 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift\u0060 and \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:183\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e445095e0c10c958f7b85e4ff99c0ff2e1b5c37f3633b0eb885532b56911c1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1384-1396 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1504-1516 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1384\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d64f01458c6f611b45776be9eb74307fb3af7e0bfd9085f442ea03a6117e9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1222-1233 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1270-1281 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1326-1337 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1222\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1222}}}],"partialFingerprints":{"codehealthFindingId/v1":"86d0a06cc85b7f42f34c1f11d287ad05a999896f68ed9cc47fd777e72332ba4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): Sources/FoundationEssentials/Locale/Locale_Preferences.swift:119-130 | Sources/FoundationEssentials/Locale/Locale_Preferences.swift:146-157 | Sources/FoundationEssentials/URL/URLParser.swift:52-63 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Locale/Locale_Preferences.swift:119\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"5438d039bcafb01ecbf5c459f296ae33147b93eeec004cedfa524734a08770a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:313-324 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:389-403 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:405-416 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:313\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"86cd701c2028cdb22ea329b76fad7d1ea1c5a6b97d2fb68161ba21d0e9744196"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): Sources/FoundationEssentials/Calendar/CalendarUtility.swift:76-86 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1595-1606 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/CalendarUtility.swift:76\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1608\u0060 calls \u0060timeInDay\u0060 and \u0060Sources/FoundationEssentials/Calendar/CalendarUtility.swift:87\u0060 does not \u2014 after which the two agree again for 4 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/CalendarUtility.swift"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"3763c276394b40dae0b5eedaaee065804850a9cece3ef4fb86fddd05944564fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): Sources/FoundationEssentials/Calendar/CalendarUtility.swift:138-146 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:747-758 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/CalendarUtility.swift:138\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/CalendarUtility.swift"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11b800aab254848e2f2af7f02ab0b2d58b6e1cc90f28f4a1ca0057ddbdafd23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:874-885 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1471-1482 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:874\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23bcc39487631c19639dae4c285ec18cbd4dc2f553973246754b7f79ab93a19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:965-976 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:998-1007 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"db05e2e32ebda5ed3bf2ead4e6bc19d270a295d4a42c62e9513b4d2301d3770e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): Sources/FoundationEssentials/Data/Data\u002BReading.swift:238-249 | Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift:570-578 \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. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d2f3b8c7736fdf8c7df8d5a6c7579d4ad04b225b89b42f36e6d62c733b8455"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:115-126 | Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:187-198 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:115\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistEncoder.swift"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"5888c6b05b3c98b626975be903994a9a5b1996e41577c70d6c34b8dddf815498"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:294-305 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift:277-288 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift\u0060 and \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:294\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"45423a6443fa7871c983d59f279319f7db9880acc7c31e1181935b9322f8de14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift:356-367 | Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift:395-406 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift:356\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"558e19b3116704f6a99729a1233a08616084a8a410ad5cb58053c37c9e5821d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:262-273 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:411-422 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:262\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7a6c3e1efa55a93ec633bf175985e9b4e8beba7f44456082f4368545181873"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Number/Decimal\u002BParseStrategy.swift:64-75 | Sources/FoundationInternationalization/Formatting/Number/IntegerParseStrategy.swift:58-69 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Formatting/Number/Decimal\u002BParseStrategy.swift:64\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/Decimal\u002BParseStrategy.swift"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"d24ce96340eea61c41bbd4d7868e6a8f58eff1bd1b09f770f79421d24ae7f1f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1196-1206 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1378-1387 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1399-1408 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1196\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a158fb795684ac91dc72fb16c9b9b9f9c6fc5584fbaedb5e4bbaf89028770b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): Sources/FoundationEssentials/JSON/JSONScanner.swift:104-114 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:111-121 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:207-217 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift:104\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"af41016cf49a3cdde01e244df21650710348c71b45574cf0acf310f18d9e698b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1187-1197 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1294-1301 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1187\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1187}}}],"partialFingerprints":{"codehealthFindingId/v1":"183a1bcac9e7cabe678b537a372c44d5fd54089b8c30865d64c020b6073b8a07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSONScanner.swift:226-236 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:348-358 \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. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ffc2da96d60474c0e1ae5a71373ddb78dbed0e9c93b11a8724a8dfb05907c48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): Sources/FoundationEssentials/Locale/Locale_Preferences.swift:101-111 | Sources/FoundationEssentials/Locale/Locale_Preferences.swift:132-142 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Locale/Locale_Preferences.swift:101\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a0097b1034457aeb90c7529604012bb6632a39c27d8083216ca10e65bfeeec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): Sources/FoundationEssentials/URL/URLParser.swift:1212-1222 | Sources/FoundationEssentials/URL/URLParser.swift:1249-1259 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLParser.swift:1212\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"85f92885101d28849e9fda7e2f473cc8cf3f2b0cd7484833f11649fd755ab0e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_Resolution.swift:177-187 | Sources/FoundationEssentials/URL/URL_Resolution.swift:260-270 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_Resolution.swift:177\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Resolution.swift"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d7bee193a39283c011e03476ef5629f334488bc26eac03e4e457be06f37d289"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:828-838 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:910-920 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"554ebab6b7f41203c93e935e4df7e768c3982146448a3dfdf1a4e6b8e1736def"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1465-1475 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1585-1595 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1465\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1465}}}],"partialFingerprints":{"codehealthFindingId/v1":"768d113320b026d6a65276306f5ef4e6d81125612a89c1e4428261a99284c77d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 7): Sources/FoundationMacros/PredicateMacro.swift:525-534 | Sources/FoundationMacros/PredicateMacro.swift:536-545 | Sources/FoundationMacros/PredicateMacro.swift:547-556 | Sources/FoundationMacros/PredicateMacro.swift:558-567 | Sources/FoundationMacros/PredicateMacro.swift:589-598 | Sources/FoundationMacros/PredicateMacro.swift:600-609 | Sources/FoundationMacros/PredicateMacro.swift:611-620 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationMacros/PredicateMacro.swift:525\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationMacros/PredicateMacro.swift"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"721eb0996ea0a619e722b56c87098c2ca622ad767c602ff1158ddab76d0dbeba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:411-420 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:429-438 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:449-458 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:467-476 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:486-495 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:505-514 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:411\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0fb400ccde1189a417ccb485b6073c70724a5eeeaadf76947f2e27d2cbc3e2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 5): Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:413-422 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:431-440 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:451-460 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:507-516 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:524-532 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:413\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"849cd06703a80254e0d0fea2d7b1b29c22615ad4499b151aa61050c2d064eba5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): utils/build-list-format-data-impl.swift:304-317 | utils/build-list-format-data-impl.swift:322-331 | utils/build-list-format-data-impl.swift:333-342 \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":"utils/build-list-format-data-impl.swift"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1ff3a1b28c3846715393297ee69327141e862533ece8159b458dae732c40ecc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedSubstring.swift:168-177 | Sources/FoundationEssentials/AttributedString/DiscontiguousAttributedSubstring.swift:112-121 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedSubstring.swift:168\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedSubstring.swift"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"480f34b26f0dd4341e464fb80bf319524d6bdef019c1739329d168d19736c724"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:322-331 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:951-960 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f56996be9c0e824f6d28153fccdd4894512ba366cbfc5d26ce69ce693a9580f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:265-274 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:251-260 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac44772f340e2e0fad8b94d217beb2725755c7720da36d14e4481efa31da5aef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): Sources/FoundationEssentials/String/String\u002BInternals.swift:197-206 | Sources/FoundationEssentials/String/String\u002BInternals.swift:223-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":"Sources/FoundationEssentials/String/String\u002BInternals.swift"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"de83ef044054d7fa8f4e3505ad73667c5aad8e7ee713898a3676415a0f3cbdf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): Sources/FoundationEssentials/URL/URLEncoder.swift:404-412 | Sources/FoundationEssentials/URL/URLEncoder.swift:435-444 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLEncoder.swift:404\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6295f064557f80b839c01dd2aa9849c0ab82b4d5d08cc4f84c265c17470f365"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns.swift:532-540 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns.swift:555-564 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns.swift:532\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns.swift"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"896e8acc6fa70f451a95bc6deb9e91b6b65d1a858e425874f6ab8b836a9657fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift:381-390 | Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift:408-417 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift:381\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b2874f44e7dffc3aaa8bd43fe65675dfcd277b20f8e32d264dca9c8fb72184f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:210-219 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:381-390 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:210\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"4903497e7e7a20a43d6811c7afc91cf837486da8bf8e74a93603a5052892a3f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_C\u002BResolution.swift:69-77 | Sources/FoundationEssentials/URL/URL_C\u002BResolution.swift:81-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_C\u002BResolution.swift:69\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_C\u002BResolution.swift"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aca0d074ad70d9ea69a67cf4f86f1ab6bd13be14734ab1f2dd5b2f845b08add"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 8): Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:319-327 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:398-406 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:411-420 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:425-438 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:445-458 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:463-476 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:482-495 | Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:501-514 \u2014 all 8 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift:319\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/URL\u002BUnicodeLookalikeTable.swift"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bcb2ce753e1d643a270bd0bf7375b322b2853cea5f68c4eca985ccd1ffd8f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1196-1205 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1264-1272 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1378-1386 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1399-1407 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1196\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"9984c4f4647a3c168d6b4c70ddc0528a2fbbd316335886a889bc4a6b50ccab0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:789-797 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:937-945 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:980-988 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1041-1049 \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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"1278f93a69ccaab8f4a9fa9bba4c384c6111762984445302359210bdd6c21a03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): Sources/FoundationInternationalization/Formatting/Number/Decimal\u002BParseStrategy.swift:63-71 | Sources/FoundationInternationalization/Formatting/Number/FloatingPointParseStrategy.swift:59-67 | Sources/FoundationInternationalization/Formatting/Number/IntegerParseStrategy.swift:57-65 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Formatting/Number/Decimal\u002BParseStrategy.swift:63\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/Decimal\u002BParseStrategy.swift"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"0252a87011950ab122a49233f50361b3400e0ed548b6513b77b033ca45754d92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:930-937 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:920-928 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:930\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"1317246531abc8bf59346e35abfe4202283e87aadeb929d9d427f30c482ba107"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1453-1461 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1591-1599 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1453\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1453}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7c8da98c004aa18d7efb545de1c8d87cb972f17cbff9703db054d35ce7e709c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSONEncoder.swift:1518-1526 | Sources/FoundationEssentials/JSON/JSONEncoder.swift:1531-1539 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONEncoder.swift"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd269962b63055716bca7d513c0af42e4f697e0629928828895aa9ee4c19c15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): Sources/FoundationEssentials/URL/URLComponents_ObjC.swift:438-446 | Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift:141-149 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift:139\u0060 calls \u0060Mutex\u0060, \u0060Calendar\u0060 and \u0060Sources/FoundationEssentials/URL/URLComponents_ObjC.swift:437\u0060 does not \u2014 after which the two agree again for 4 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLComponents_ObjC.swift"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a5194d50af6c2c11cc118af05c7534f7fe15aadae910fd3a1dcf22dfb5d670"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_Impl.swift:1507-1515 | Sources/FoundationEssentials/URL/URL_Swift.swift:915-923 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_Impl.swift:1507\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f70c16327b65e48b72ab6c0e680f41091ea775c7d9ee79ebf76d4bb16cecda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:197-205 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift:188-196 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift\u0060 and \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:197\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"afb006018ed71a4e16ebdeb79880316a5d1c834f1b107edec1c203155e1de749"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20138 lines \u00D7 7): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1128-1135 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1256-1263 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1302-1309 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1343-1350 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1371-1377 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1392-1398 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1410-1413 \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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1392\u0060 calls \u0060_ordinality\u0060 and \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1410\u0060 does not \u2014 after which the two agree again for 4 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1128}}}],"partialFingerprints":{"codehealthFindingId/v1":"778b31f3157390010233427af02adb318247a41e82e798d03e6f0336afbec8e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1196-1204 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1264-1271 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1378-1385 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1399-1406 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1414-1421 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1196\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"180d52560b461bf841582626582db7127fffd821aa68f5a3c446aad5ce46e122"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:863-871 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:950-957 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1054-1061 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1075-1082 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1091-1098 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:863\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb29d4649852e3123958e8ed45bf4b1cc6aa2a36c8d7e735c5655bf46ae6a6fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:667-674 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:680-687 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:697-704 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:714-721 \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":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"e820b33f4c836fdd2eb14cbbcc5e343cc0607ed260e82bc68cbb10841b1247b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (1\u20138 lines \u00D7 4): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:781-782 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:783-783 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:805-812 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:837-844 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:805\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21689b5d384d358e12f3cf85d47d0f05dabb9de4243fe2adf7924d60f3aeb00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1108-1115 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1126-1132 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1108\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":1108}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2005c8cb66d0ae9b65ba25b1a03326b4ceac2b3f2d808cbf0887a2abbac23e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/Calendar/DateComponents.swift:45-52 | Sources/FoundationEssentials/Calendar/DateComponents.swift:83-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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4728faffe99a909718aeeb06f6978085e258ee4c1d908710ea1dc59b8e4adf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:140-147 | Sources/FoundationEssentials/JSON/JSONScanner.swift:391-398 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:140\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c507f7be6c7f94206689de82cf7fe5bd75c204327b6d8a2a97821058d1ea32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/Locale/Locale_Preferences.swift:256-263 | Sources/FoundationEssentials/Locale/Locale_Preferences.swift:269-276 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Locale/Locale_Preferences.swift:256\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b052788f3d7ab6f612d8a5e6e8a543cfd35751da60831d42b4d93b5a838c6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/Locale/Locale_Preferences.swift:410-417 | Sources/FoundationEssentials/Locale/Locale_Preferences.swift:420-427 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Locale/Locale_Preferences.swift:410\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Preferences.swift"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"77dc1c9e9cfbc6e3e10e4dfffbfef5b23e72e418bba92d51d1a5b953f79460b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/Predicate/Predicate.swift:103-110 | Sources/FoundationEssentials/Predicate/Predicate.swift:122-129 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Predicate/Predicate.swift:103\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060Sources/FoundationEssentials/Predicate/Predicate.swift:100\u0060 calls \u0060available\u0060 and \u0060Sources/FoundationEssentials/Predicate/Predicate.swift:119\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Predicate.swift"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce801178d53d79dfa351432fa29e05c67bbb7577cd563b82484c954dfed69c73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:247-254 | Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:258-265 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:247\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistEncoder.swift"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2e6af38cdaed2bd1adc743351e590c1aa09fe4b545cb7ff3322008457db7137"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/URL/URLEncoder.swift:689-696 | Sources/FoundationEssentials/URL/URLTemplate_PercentEncoding.swift:92-99 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLEncoder.swift:689\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLEncoder.swift"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0ee76718b23d44c60b7e9d82f55f39e58d757637bb0a73b7c94c42762d757f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift:111-118 | Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift:151-158 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift:111\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12556ef0a40f976d88f298a9bc665103f2fa5e0f79b7dc4617fa1b46f5428b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift:513-520 | Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift:526-533 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift:513\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/DateComponents\u002BISO8601FormatStyle.swift"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d138daf46c72c3feb22de5ac878dbaf5574a6c31170d2609d534b1bf70f4ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20138 lines \u00D7 3): Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:123-130 | Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:132-139 | Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:140-143 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:123\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:130\u0060 calls \u0060quotientAndRemainder\u0060 and \u0060Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:143\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"531a8e546cf9709bacc64ec3efdfb0f351cc64b661ac4352795569cbf82923ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20137 lines \u00D7 6): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:794-800 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:942-948 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:985-991 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1046-1052 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1067-1073 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1088-1090 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce0bdad376c3cd1012e918918a7c32e4f4827358d83301969c5355b3e87d5d5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): Sources/FoundationEssentials/JSON/JSONScanner.swift:115-121 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:122-128 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:218-224 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift:115\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"f436bc343feffc2e69a125cebdaa1dcd68195fca732f08bd01f9086109a3b3e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:215-221 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:65-71 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:215\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b6fba51c54bd11d3fa78a751df5b7ce47cf4151742e89c9da9480816b5afdd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:690-696 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:639-645 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:690\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"f060462bb59ae27b138895aec455627b42751110d6937719fc646814ba5ef6f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/Predicate/Predicate\u002BDescription.swift:349-355 | Sources/FoundationEssentials/Predicate/Predicate\u002BDescription.swift:361-367 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Predicate\u002BDescription.swift"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"541d1c0f4d344333b3a9fa42a6173ac26b90623cd53e8159d73ee3e60b93e7fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_Swift.swift:1218-1224 | Sources/FoundationEssentials/URL/URL_Swift.swift:1230-1236 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_Swift.swift:1218\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Swift.swift"},"region":{"startLine":1218}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2a396763fce8bcc6ff0aebf9e889854307739a1ce43c07c59be086802742e43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF16View.swift:99-105 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF8View.swift:99-105 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF16View.swift:99\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF16View.swift"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a855792c628276775dfe8eaae603445d964469102ed3165bbb22b2319ddcbf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift:69-75 | Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift:83-89 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift:69\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_C\u002BParsing.swift"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2629394798d0f45ee51c0019c50573b3f0a9423d42ff874a1943adc5820806a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:693-702 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:927-933 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"746c97bade33d06e8cc785dfd6086c4c15e9f723d08e3dd5459d00aa404c7ef0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Number/FloatingPointParseStrategy.swift:44-50 | Sources/FoundationInternationalization/Formatting/Number/IntegerParseStrategy.swift:42-48 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Formatting/Number/FloatingPointParseStrategy.swift:44\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/FloatingPointParseStrategy.swift"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1b2e9c2ae72ebfdb51928571b0be6016fd50196f98c5ad6efa62ba74c9813d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 7): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1136-1141 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1264-1269 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1310-1315 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1351-1356 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1378-1383 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1399-1404 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1414-1419 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1136\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"86cd7f4589fccfdcb6d3837c131d6d900100560323edb88455968d09daa1e92c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:802-807 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:950-955 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:993-998 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1054-1059 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1075-1080 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:1091-1096 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:802\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"facf16e61ac0139be7b9eb5059a0559807c62e316a0cc4cff88abe137e6621f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:200-205 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF16View.swift:100-105 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUTF8View.swift:100-105 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift:191-196 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift\u0060 and \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:200\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ba3e666df912fcd11a3168c61a344a5c753bb0413a1ff2358ba3c95a4bf219d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): Sources/FoundationEssentials/UUID_Wrappers.swift:93-98 | Sources/FoundationEssentials/UUID_Wrappers.swift:105-110 | Sources/FoundationEssentials/UUID_Wrappers.swift:129-134 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/UUID_Wrappers.swift:93\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationEssentials/UUID_Wrappers.swift:99\u0060 calls \u0060failWithError\u0060, \u0060CocoaError\u0060 and \u0060Sources/FoundationEssentials/UUID_Wrappers.swift:135\u0060 does not \u2014 after which the two agree again for 3 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/UUID_Wrappers.swift"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b013b9336102803730771e312c1baf72cc03f07ba963098d85f40581311f8767"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:117-122 | Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:124-129 | Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:133-138 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:117\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:139\u0060 calls \u0060quotientAndRemainder\u0060 and \u0060Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift:123\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/FormatParsingUtilities.swift"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff6dca4d8420841cce40f3e9b221dd4d1b5509adda13bcd34b86abf39b931f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:698-703 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:647-652 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:698\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b6b9ab258ae1dd945b8ad58f9bec503f5284f7a2a909f2d9d8eb708387d5e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20136 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1050-1055 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1057-1062 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1063-1067 \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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"886cf4307def9b14e0c1a248a5b12db4c14123c901623c02a5a6639452b7f123"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1174-1180 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1182-1187 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1188-1194 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:1174\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a6b634d1b2ea02af15e197d20b2231601eedde041a0b4b790529a3db2375b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/Data/DataProtocol.swift:337-342 | Sources/FoundationEssentials/Data/DataProtocol.swift:361-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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/DataProtocol.swift"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e54b15dcf6414d4d6e47241b69772bf643ec8011fa5f835b25d773216ac180"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:953-958 | Sources/FoundationEssentials/JSON/JSONScanner.swift:1042-1047 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:953\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note first that the copies are not typed on the same thing: the declarations holding them bind \u0060ascii\u0060 to \u0060\u0022x\u0022)\u0060 in one and \u0060\u0022.\u0022)\u0060 in another, and the duplicated lines use it. The extracted unit therefore needs a parameter type that fits BOTH \u2014 their common supertype where they have one, or a new abstraction over them where they do not \u2014 and settling that is the step that comes BEFORE the extraction above. Where the two types are deliberately unrelated, the duplication is the price of that separation and the honest resolution is to record the decision rather than to extract."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"0139eb40621789a33c8d2ac8a5a6427903026a04cb7dda6eb49258842fd5935e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:1106-1111 | Sources/FoundationEssentials/JSON/JSONScanner.swift:1140-1145 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:1106\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":1106}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d1eb42d4161dd5dd90ed42f545401b3874aa55b0a8154d3d62c35370cfac8b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift:98-103 | Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift:118-124 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift:98\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c535acd96c53cc8db1669754eed19ce927f6b19d6195b63fe0e53296c578e60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_Parsing.swift:719-724 | Sources/FoundationEssentials/URL/URL_Parsing.swift:729-734 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_Parsing.swift:719\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Parsing.swift"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"219b938032941992bead0f23f02c1cb696e561e36cb4f5f1db0ab675996ce33e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/Formatting/Date\u002BHTTPFormatStyle.swift:99-104 | Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift:492-497 \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. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/Date\u002BHTTPFormatStyle.swift"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"763baa538f32231d40d10aecbb2ca7f810fe2d36493b914f53bb52b9a9f27cc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift:374-379 | Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift:413-418 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift:374\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"14016f33717490ebf07f75b3aeeab5c8a00a9c379beb797b7bb7425181733b93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Number/FloatingPointParseStrategy.swift:36-41 | Sources/FoundationInternationalization/Formatting/Number/IntegerParseStrategy.swift:35-40 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Formatting/Number/FloatingPointParseStrategy.swift:36\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/FloatingPointParseStrategy.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f906f6ee91647939aae1dc7f604e4c772b4cca19ee74918c9fe402480df9d3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 5): Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:667-671 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:680-684 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:714-718 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:732-736 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:756-760 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:719\u0060 calls \u0060distance\u0060, \u0060corruptedValue\u0060 and \u0060Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:761\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fcb261a9fd2783ea5e005334e7fc90e4b74979f90cf67d0240dcfa654e6f545"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 6): Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:147-151 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:189-193 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:236-238 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:239-243 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:293-295 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:297-301 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:147\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:188\u0060 calls \u0060applyChanges\u0060 and \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift:146\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BAttributeTransformation.swift"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"72a44d29843bfb4f400f83687acecb834af765327f06db0479ba25230aa12bee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:971-975 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:3123-3135 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:1370-1374 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:971\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":971}}}],"partialFingerprints":{"codehealthFindingId/v1":"5837d7204e198b2c64f266fde68b8e0f88de728c570f1a894441dc7e1b391bfe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/JSON/JSONScanner.swift:127-131 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:133-137 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:201-205 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift:127\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"3edc363ceb123fd8ce09dc08cc7178e229d107f285feaa8f31e676fa2e3ad9db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:700-705 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:707-711 | Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:713-717 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift:700\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"121c9b9cd1b90d47205d3e849d18485f505c867e4b0d9ebc7c56df42772253c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift:366-370 | Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift:374-378 | Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift:382-386 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift:366\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa8bdf559286db54d7159719cc22ae79b030d2b913cb2c0b5790207bb1f2804b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:378-382 | Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift:385-391 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:207-212 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:378\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bcbd57e99b3f3fa2d1dbcf24630400513956158d7a9159986efd48cce665758"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:938-942 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:929-933 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:938\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":938}}}],"partialFingerprints":{"codehealthFindingId/v1":"7515f74357c4388e8861d37bb3dd38c52be9e70a8f3fe05bc7fd7ff961adb4c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:822-826 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:872-876 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ec71b194d6708e0706ec3d87a3f895e1687e32e1e21feb2f9ac2c6bdbbb925"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20135 lines \u00D7 3): Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:831-835 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:881-885 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:940-943 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:831\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d5b4d3c951248035803e23692634f9b0c7329401842a877be418b13610ef05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (1\u20135 lines \u00D7 3): Sources/FoundationEssentials/Data/ContiguousBytes.swift:74-74 | Sources/FoundationEssentials/Data/ContiguousBytes.swift:110-114 | Sources/FoundationEssentials/Data/ContiguousBytes.swift:133-137 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Data/ContiguousBytes.swift:74\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d5314b01a37ce7dcb36dbfe023a30722ce99878e2bd6f67aabf8e51465f30fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift:93-97 | Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift:113-117 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift:93\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressFraction.swift"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b5404a3cfbf9f0ef4eb4c85a11613f2ccc294a9f7cd61c1bfd346c39575aca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistDecodingFormat.swift:23-27 | Sources/FoundationEssentials/PropertyList/XMLPlistDecodingFormat.swift:25-29 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/PropertyList/BPlistDecodingFormat.swift:23\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistDecodingFormat.swift"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2214723aaf76ea4645a9d76bc003fbe1b1080fa4c92ef84795159ec1bdc006d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistDecodingFormat.swift:49-53 | Sources/FoundationEssentials/PropertyList/XMLPlistDecodingFormat.swift:52-56 \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. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistDecodingFormat.swift"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"06e6c87a7832e23973425ea7726ca17c094eb2535c60c2f3eed5418c9783b6b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:252-256 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:734-738 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:252\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f2ccce0e2e9b32a373cdf3c7901526aa1d1ce7a2a31a6715b8edbf10796998"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:737-741 | Sources/FoundationEssentials/PropertyList/BPlistScanner.swift:765-769 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b88fc5be933db6455667618d24211fd999a87d0a45ed7cbd332d5b5e4c6acc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/URL/URLComponents.swift:246-250 | Sources/FoundationEssentials/URL/URL_Impl.swift:1498-1502 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URLComponents.swift:246\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLComponents.swift"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e12d195ca585ae03c4563bb5a852318dadabcb2e2c8991bd422efae61e2da3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/FileManager/SearchPaths/FileManager\u002BXDGSearchPaths.swift:48-52 | Sources/FoundationEssentials/FileManager/SearchPaths/FileManager\u002BXDGSearchPaths.swift:57-61 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/SearchPaths/FileManager\u002BXDGSearchPaths.swift"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b9a4c86f0a23511b47a6e0f8aa242f87f24199e2b99e36e6507c67c5fd0b2f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/Data/Data\u002BWriting.swift:746-750 | Sources/FoundationEssentials/Data/Data\u002BWriting.swift:781-786 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/Data/Data\u002BWriting.swift:746\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060Sources/FoundationEssentials/Data/Data\u002BWriting.swift:789\u0060 calls \u0060unlink\u0060 and \u0060Sources/FoundationEssentials/Data/Data\u002BWriting.swift:751\u0060 does not \u2014 after which the two agree again for 4 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"b668ee3d3c7d5332c087408141801e00721e9fea002b5e1409fa4b0e7c00edef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/URL/URL_C\u002BSpans.swift:93-99 | Sources/FoundationEssentials/URL/URL_C\u002BSpans.swift:109-113 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/URL/URL_C\u002BSpans.swift:93\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_C\u002BSpans.swift"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e18931033b56b7964ac5e43e76ed6fe26f3c2763c43d1672f1632687dacf42e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift:206-210 | Sources/FoundationInternationalization/Formatting/Date/DateFormatStyle.swift:1307-1311 \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":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cde28d8af864b00cd71449ecf5256a166bed128563fe7cc4a35d26c04ca37d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BRun.swift:62-66 | Sources/FoundationEssentials/AttributedString/AttributedStringProtocol.swift:210-214 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BRun.swift"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"b35669a46c8788833e3734bb176655e3c5df4fb0c2f66ed997961fee3c645b2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:218-225 | Sources/FoundationEssentials/JSON/JSONScanner.swift:469-476 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a48877f6a8d376287e42d00b3c27e51adf5cb1838665fca99c7d22c435d3ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:357-363 | Sources/FoundationEssentials/JSON/JSONScanner.swift:583-589 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42a4930653043558c621fffa0110e6b732acb3b110aa373f319228d0eb05595"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:48-57 | Sources/FoundationEssentials/JSON/JSONScanner.swift:294-303 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1b12c10bafd14457474df714cf6aa1df548a38491e87e7167e3dde2f19b387"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:71-76 | Sources/FoundationEssentials/JSON/JSONScanner.swift:317-322 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f954a14a56a6bb76bdad935cfa0d6b24badca35e457503a6b21feb9045a4664"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:78-82 | Sources/FoundationEssentials/JSON/JSONScanner.swift:324-328 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c6a8d0ed31ec2f6c0af507fd97568b704d1890de96e278b7c204a20a54f859"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:84-88 | Sources/FoundationEssentials/JSON/JSONScanner.swift:330-334 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e6070d5bb5fe39bd71309b39448876c8c28e55f4973b75d30d615cfe1f8a1e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): Sources/FoundationEssentials/JSON/JSONDecoder.swift:306-314 | Sources/FoundationEssentials/JSON/JSONEncoder.swift:361-369 | Sources/FoundationEssentials/PropertyList/PlistDecoder.swift:51-59 | Sources/FoundationEssentials/PropertyList/PlistEncoder.swift:66-74 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 4 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 4 times. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"296d2798703ee2fe7f35b656e717982a46d8bbbfadf39ce3dfa7ed0167a3c844"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:928-932 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:726-730 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"9edf71c37b4aba318cbe83c4dfdc974c26e9b9374293fa169c6f40941dfdd999"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:135-142 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift:138-145 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift\u0060 and \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:135\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c595adcfca24b57ebe1f79913a96c5fddc74a5f7fd1b279f1ded33277b99599"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift:72-77 | Sources/FoundationEssentials/Predicate/Expressions/Comparison.swift:74-79 \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":"Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4559fa364c38f66456e88dc3b09ebba4f103be0a60b0c2b5c7a360c0e86ec6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 8): Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift:55-59 | Sources/FoundationEssentials/Predicate/Expressions/Disjunction.swift:55-59 | Sources/FoundationEssentials/Predicate/Expressions/Division.swift:135-139 | Sources/FoundationEssentials/Predicate/Expressions/Division.swift:150-154 | Sources/FoundationEssentials/Predicate/Expressions/Division.swift:165-169 | Sources/FoundationEssentials/Predicate/Expressions/Equality.swift:55-59 | Sources/FoundationEssentials/Predicate/Expressions/Inequality.swift:55-59 | Sources/FoundationEssentials/Predicate/Expressions/Optional.swift:163-167 \u2014 there are 8 copies across 6 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 8 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d6e70af1dbb58b72c8dee058efd289fb97e608ba726b7b421529f950855e11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 8): Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift:61-65 | Sources/FoundationEssentials/Predicate/Expressions/Disjunction.swift:61-65 | Sources/FoundationEssentials/Predicate/Expressions/Division.swift:141-145 | Sources/FoundationEssentials/Predicate/Expressions/Division.swift:156-160 | Sources/FoundationEssentials/Predicate/Expressions/Division.swift:171-175 | Sources/FoundationEssentials/Predicate/Expressions/Equality.swift:61-65 | Sources/FoundationEssentials/Predicate/Expressions/Inequality.swift:61-65 | Sources/FoundationEssentials/Predicate/Expressions/Optional.swift:169-173 \u2014 there are 8 copies across 6 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 8 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f50d4d3fc18a3d01e06d30773e59043f70e7daf677a2824420b14f967ab0e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift:56-60 | Sources/FoundationInternationalization/Predicate/LocalizedString.swift:63-67 | Sources/FoundationInternationalization/Predicate/LocalizedString.swift:127-131 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"5733b25f3ca8bad74265af30deda851723e94a18816e0e06f87c6ab299635339"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift:62-66 | Sources/FoundationInternationalization/Predicate/LocalizedString.swift:69-73 | Sources/FoundationInternationalization/Predicate/LocalizedString.swift:133-137 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec0e76accbc5f93f5d509f5f741d916ddc79bfbe15020fccc4bdd382313e33d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift:178-184 | Sources/FoundationInternationalization/Formatting/Date/DateFormatStyle.swift:1291-1297 \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":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"17e865c86f229ed8bc5d3b9723f2f6e5f39655181d7eb24de48eee20c1989cc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift:186-192 | Sources/FoundationInternationalization/Formatting/Date/DateFormatStyle.swift:1299-1305 \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":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d320e4b66303745cbaddd3d10b1cc667162fab3aa18be32352bd7b576cb141c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift:194-198 | Sources/FoundationInternationalization/Formatting/Date/DateFormatStyle.swift:1313-1317 \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":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdfa886028e868bd28ca07e906959d2a06c2ad69d529c80c63b45c5b40eb19f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift:200-204 | Sources/FoundationInternationalization/Formatting/Date/DateFormatStyle.swift:1319-1323 \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":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"0abb08732b542bfd6557ac3bf77c5d75466630bbb4533768e146895301f34367"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 8): Sources/FoundationEssentials/Calendar/Calendar.swift:1827-1831 | Sources/FoundationEssentials/Calendar/DateComponents.swift:741-745 | Sources/FoundationEssentials/Date.swift:379-383 | Sources/FoundationEssentials/DateInterval.swift:206-210 | Sources/FoundationEssentials/Decimal/Decimal\u002BCompatibility.swift:36-40 | Sources/FoundationEssentials/TimeZone/TimeZone.swift:367-371 | Sources/FoundationEssentials/URL/URL.swift:1999-2003 | Sources/FoundationInternationalization/Locale/Locale_ObjC.swift:549-553 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 8 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 8 times. Note first that the copies are not typed on the same thing: the declarations holding them bind \u0060result\u0060 to \u0060inout Calendar?\u0060 in one and \u0060inout DateComponents?\u0060 in another, and the duplicated lines use it. The extracted unit therefore needs a parameter type that fits BOTH \u2014 their common supertype where they have one, or a new abstraction over them where they do not \u2014 and settling that is the step that comes BEFORE the extraction above. Where the two types are deliberately unrelated, the duplication is the price of that separation and the honest resolution is to record the decision rather than to extract."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1827}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae9d954a4b1840dc6d447ce66a08e777467bd3401b2d1b685f74af3fd007a29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): Sources/FoundationEssentials/Calendar/Calendar.swift:1838-1843 | Sources/FoundationEssentials/Date.swift:390-395 | Sources/FoundationEssentials/DateInterval.swift:217-222 | Sources/FoundationEssentials/TimeZone/TimeZone.swift:378-383 | Sources/FoundationEssentials/URL/URL.swift:2010-2015 | Sources/FoundationInternationalization/Locale/Locale_ObjC.swift:560-565 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 6 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 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1838}}}],"partialFingerprints":{"codehealthFindingId/v1":"018e61a78f7d41586936fb368e8d2f9d4e29eedc90b3d0abf6e16c2079b53398"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/Calendar/DateComponents.swift:779-785 | Sources/FoundationEssentials/URL/URLComponents.swift:1289-1295 \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":"Sources/FoundationEssentials/Calendar/DateComponents.swift"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af5f47ad1ffbbc9a30c17e425d3c58cbaa59ead1c93f301841be2a2c490e4f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSONScanner.swift:205-210 | Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift:327-332 \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":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e17198ebcc0435cdb0ca4d28c44f34cde429282a78008ca83a078ffc62b476"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/Predicate/Expression.swift:23-27 | Sources/FoundationEssentials/Predicate/Predicate.swift:70-74 \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":"Sources/FoundationEssentials/Predicate/Expression.swift"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f0ff8190a64be931168dea8902ed8043ad0886ec10823e2093c493a7cfe051"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:57-63 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:43-49 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d2f8e75d061b85bd46bbe5be6a1f03872965b4229e47d8aa174326a72a9615"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:158-162 | Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:164-168 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:144-148 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"afb0b5042938960130cf0538f0ed934abfdc6f011f8701fbd699a0110aa2af6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:203-207 | Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift:329-333 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:189-193 | Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift:315-319 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift\u0060 and \u0060Sources/FoundationEssentials/PropertyList/XMLPlistEncodingFormat.swift\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 93 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":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"cefaac0bda7fc1bf6bc69688db5bc870ec44f8808ad6d82287a02069a983d1ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift:72-85 | Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift:65-78 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift\u0060 and \u0060Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"966fad1c11e150ee6a2582229dcb5a381a5a6238210cfc1b5dddfb2f20d11bdf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift:79-84 | Sources/FoundationEssentials/Predicate/Expressions/Comparison.swift:81-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":"Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"403f22fe30601740717b517dbb039441b433d8ef31554938b2c760de5e44f206"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/Predicate/Expressions/Collection.swift:60-64 | Sources/FoundationEssentials/Predicate/Expressions/Collection.swift:128-132 | Sources/FoundationEssentials/Predicate/Expressions/Dictionary.swift:55-59 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/Collection.swift"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78d0c5191ec7088c3f3f5f5c0de286c03bf4ebdbf329baf8c7aa8c1176ed694"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): Sources/FoundationEssentials/Predicate/Expressions/Collection.swift:66-70 | Sources/FoundationEssentials/Predicate/Expressions/Collection.swift:134-138 | Sources/FoundationEssentials/Predicate/Expressions/Dictionary.swift:61-65 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/Collection.swift"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dfbdd974898c00be817fed6c5fe4eb9039a194c2b349c7ca7c782efc043a066"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/Predicate/Expressions/ExpressionEvaluation.swift:56-60 | Sources/FoundationEssentials/Predicate/Expressions/PredicateEvaluation.swift:58-62 \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":"Sources/FoundationEssentials/Predicate/Expressions/ExpressionEvaluation.swift"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"92f9e4681ab5c8fa021f3a20027ce92489b987639e1566f29e724dc60a0ef43c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/Predicate/Expressions/ExpressionEvaluation.swift:62-66 | Sources/FoundationEssentials/Predicate/Expressions/PredicateEvaluation.swift:64-68 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/ExpressionEvaluation.swift"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0af976b913883cc5d645cf06962ce7c7d733ab86746b9c0edc71ee918fbda94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): Sources/FoundationEssentials/Predicate/Expressions/Filter.swift:69-74 | Sources/FoundationEssentials/Predicate/Expressions/Sequence.swift:201-206 | Sources/FoundationEssentials/Predicate/Expressions/Sequence.swift:218-223 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/Expressions/Filter.swift"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"66d1a9c9f7fc328d41afc95b5fe9e1f701d9723f125a0a8313dc54094f0f989d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift:611-615 | Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift:571-575 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d311939007b409c35ca4d91da39006018440a627079ba541eb016e3149767fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/JSON/JSON5Scanner.swift:885-889 | Sources/FoundationEssentials/JSON/JSONScanner.swift:958-962 \u2014 before extracting anything, compare \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift\u0060 and \u0060Sources/FoundationEssentials/JSON/JSONScanner.swift\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 299 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060Sources/FoundationEssentials/JSON/JSON5Scanner.swift:885\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce0d2183459eb66b741ddf9855e9d3b8836a810070c08450429b9ff10d0d4a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): Sources/FoundationEssentials/ProgressManager/ProgressManager.swift:555-559 | Sources/FoundationEssentials/ProgressManager/ProgressReporter.swift:69-73 \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":"Sources/FoundationEssentials/ProgressManager/ProgressManager.swift"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8903def298fd2b1746285d65ff673a06dac0a6c1db42b923435b61a8bdb70ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 15): Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:135-140 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:150-155 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:165-170 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:180-185 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:195-200 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:210-215 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:225-230 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:240-245 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:255-260 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:270-275 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:285-290 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:300-305 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:314-319 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:329-334 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:344-349 \u2014 all 15 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b2c3de47e61af7db313e3701e38fe2484d14f8159adaffef4489e39479bb88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 15): Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:459-464 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:475-480 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:491-496 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:507-512 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:523-528 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:539-544 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:555-560 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:571-576 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:587-592 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:603-608 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:619-624 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:635-640 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:651-656 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:667-672 | Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift:683-688 \u2014 all 15 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also register a scope-exit action (a \u0060defer\u0060-style statement) that runs when the function holding them returns: moved into a called unit it would run when THAT unit returns instead \u2014 before the caller uses what it releases \u2014 so keep the registration at the call site and extract only the work around it, or have the extracted unit hand the resource back for the caller to register."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDictionaryDecoder.swift"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5bd2130428f842e012a56d44f86db27abac1f9d45f60d7625ebae24f8be4e1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 8): Sources/FoundationEssentials/URL/URL.swift:783-787 | Sources/FoundationEssentials/URL/URL.swift:799-803 | Sources/FoundationEssentials/URL/URL.swift:816-820 | Sources/FoundationEssentials/URL/URL.swift:830-834 | Sources/FoundationEssentials/URL/URL.swift:1237-1241 | Sources/FoundationEssentials/URL/URL.swift:1257-1261 | Sources/FoundationEssentials/URL/URL.swift:1297-1301 | Sources/FoundationEssentials/URL/URL.swift:1317-1321 \u2014 all 8 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL.swift"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"7761c9c0cfc2948379f9893c073ca743babca3b2d325d350a9ab633f57457672"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: _FoundationInternationalizationData: _FoundationInternationalizationData: 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":"6c2de89250bb5331cd2806db2d5852839d1c56b6667dc2ffc09ada833e16daa5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: String (LCOM4 28): String\u0027s methods fall into 28 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 28 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"utils/update-iana-charset-names-impl.swift"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"df9bf7ca7fcb7f0fcb764668d46648e052b5d04e163e13d6506d240b95c9902d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ProgressManager (LCOM4 20): ProgressManager\u0027s methods fall into 20 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 20 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProgressManager/ProgressManager.swift"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc598a43852df310f77c824f3bfe21e020a4eb76ca7caa403cc2670408c1fd2a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _LocaleAutoupdating (LCOM4 17): _LocaleAutoupdating\u0027s methods fall into 17 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 17 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Autoupdating.swift"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6855b6b7366315161f87991299e0f7d4e330644e0ee52b5d8b8158ddbc4305ed"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _LocaleUnlocalized (LCOM4 17): _LocaleUnlocalized\u0027s methods fall into 17 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 17 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale_Unlocalized.swift"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4c5d08489053aa40efbb538f016bea990c3ab6d71feeadaa508576557f00b9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ISO8601FormatStyle (LCOM4 17): ISO8601FormatStyle\u0027s methods fall into 17 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 17 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cedb7f96e35b2b63bb4d4e3f187a5b72550a2227841dc26ab66c6c0b88648eb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringProtocol (LCOM4 17): StringProtocol\u0027s methods fall into 17 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 17 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BIO.swift"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fe916c1030b651872c93429384d20099a727740ac924cabedb101db12c4bc0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _CalendarAutoupdating (LCOM4 14): _CalendarAutoupdating\u0027s methods fall into 14 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 14 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Autoupdating.swift"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f75422ddca689817b03920e38845d668a78890bf479d74664179a49dbe97fa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Guts (LCOM4 13): Guts\u0027s methods fall into 13 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 13 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"427beafa19807ec6f05b21c80460fc60c501a9be72490753c2a57961a7076dc8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Range (LCOM4 11): Range\u0027s methods fall into 11 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 11 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BIndexValidity.swift"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ce3f5dc5b0adb05b4aecc702db423752e071c62ce12e5979a6227c4965c355a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Span (LCOM4 9): Span\u0027s methods fall into 9 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 9 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Span\u002BUtils.swift"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb86819bc06f008ce3ab819ed98313dbe83ee9cd93815ce80d4ccc1ecbf022c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TimeZoneAutoupdating (LCOM4 8): _TimeZoneAutoupdating\u0027s methods fall into 8 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 8 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/TimeZone/TimeZone_Autoupdating.swift"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef8cdf6bac586506cbbe978647bfa83ba5dc877a4ac2f04743a0766aa644060"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Array (LCOM4 8): Array\u0027s methods fall into 8 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 8 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/CodableWithConfiguration.swift"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e94b439765f1a51d9f59c476f218123bde112128b2140bba9ba5686bd95abe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AttributeStorage (LCOM4 8): _AttributeStorage\u0027s methods fall into 8 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 8 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeConstrainingBehavior.swift"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88b42e26a0e5b0b22dd392815e196a2ac20e9fb09359429a3254fea22e43ea7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NotificationCenter (LCOM4 6): NotificationCenter\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/NotificationCenter/NotificationCenter.swift"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72485e23b513ad0985c8ba6c2b9104e6ec076451993c65e49c06f926a46179a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _InternalRuns (LCOM4 6): _InternalRuns\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002B_InternalRuns.swift"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"00383a94c695e6dd25775b68b6b1e38a3fb0b8adeb319a420c4bac316ea3514a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _LocaleBridged (LCOM4 6): _LocaleBridged\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_Bridge.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"863cb8296e6b70c6d1e2dd91aed59d0f1f71c9bf997707d25f56e15b8fad10c3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Scalar (LCOM4 6): Scalar\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/BidiClass\u002BICU.swift"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e0d846c0acf0ab490e864290453a6de95e4687a8c76e19842015b01389ba213"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VerbatimFormatStyle (LCOM4 6): VerbatimFormatStyle\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Date/Date\u002BVerbatimFormatStyle.swift"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"e010d1bc3f7023634dfcd9a8e0c8d399356f3865fa179c7ac0818917a1155f6d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TimeZoneGMT (LCOM4 5): _TimeZoneGMT\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/TimeZone/TimeZone_GMT.swift"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"32c3249f1e204c6c094d1f30603be2bac4137797c391b45c6a3dddd07f9e2f61"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _InternalRun (LCOM4 5): _InternalRun\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002B_InternalRun.swift"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"547b749810f401a0390819c570c0788b0f5ba6a140e6e49440d7f0509ce5feda"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnsafeBufferPointer (LCOM4 5): UnsafeBufferPointer\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b8f2feb5e960bcd3cc558c3c454683608cbbe53772b50336de0c7dbfdd281f7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _LocaleICU (LCOM4 5): _LocaleICU\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7a7033e8d9e0a7ce0ba2b39b5446b28dc22efcc6a6372670a08ad3a569ae04"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TimeZoneGMTICU (LCOM4 5): _TimeZoneGMTICU\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_GMTICU.swift"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"5263fe6e006f856aa63ec81e21fc263c92fe3e078e10516fdc2e6b99aef519a3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSONMap (LCOM4 4): JSONMap\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONScanner.swift"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2214aeef82fbd34f5755dca4038ae4dd6138410926bce9deb96f30eb734658"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: XMLPlistMap (LCOM4 4): XMLPlistMap\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3ebaeda07003ab146132e63a58f0d3443478bb53b754eaac97c9e71e867547"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Sequence (LCOM4 4): Sequence\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/SortComparator.swift"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"78837917f88267d724eaa0206ae55b6850c731989338b83cbbefdfbbf5c9655d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Duration (LCOM4 4): Duration\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/UUID.swift"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e15e3783cd53bfe65e1c557f22803fba125a5440de9fdc8650f26ff709b828c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Index (LCOM4 4): Index\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BIndexValidity.swift"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5a7b7cf97d0c8fa31f7a3cb2156f9eb1f518cb1e873aa00e456de7d6a1652b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RangeSet (LCOM4 4): RangeSet\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BIndexValidity.swift"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bcadf2f58bf2fb9a0b563588a56c318c58e882e3f3eaad91458f4f48bedea58"}},{"ruleId":"D8","level":"warning","message":{"text":"Coverage not measured \u2014 Swift suite: Coverage NOT MEASURED: the Swift half could not be measured \u2014 the Swift suite in . produced no coverage export. Coverage is excluded from the score rather than counted as a near-zero. The named suite step is one the repository\u0027s maintainers can perform; once it passes, the real number is measured on the next scan. Alternatively, commit the lcov/Cobertura report your CI produces and it is read without a re-run."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"62e63e619c28f057e129f2997c965d32a457366a9ce18ca019ffb6bdfba85c99"}},{"ruleId":"D10","level":"warning","message":{"text":"Skipped test: searchPaths_XDGEnvironmentVariables: Skipped \u2014 XDG"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/FileManager/FileManagerTests.swift"},"region":{"startLine":1135}}}],"partialFingerprints":{"codehealthFindingId/v1":"108950b018abfda044ceb2b1bb744c9a54efbc9b360bdfb9da1d1621c49d2bb1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: initBufferViewOrdinaryElement: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BufferViewTests.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5865354fd912e0d286fcd13726b6ed6ff00ba61d6bf88fa0fe58605f5bb249c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: membership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab1a425177da457a79dcdab70b0f7800382890b69b1f4949043886a4d5bd56a9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: bmpMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dcad91ab6ad35346447b40f08978f39b5c258217a0bbfcb6ab18e39fae9c24a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: nonBMPMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f421dad1fcc635590e3d2f19440136fe5f50f339f3f43ac2d14928bf129b456"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: illegalSetMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ec44fd905b3df108fdb28113d7ed2a809b126a08deae88ce70b60e98a0f5fa"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: controlAndFormatterSetMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1fd465bad15a2d13c4fb52795792514e97d4044e889c5c61b9eb83dfcdd628"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: whitespaceSetMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d04ea5836357134adb4036d4dad93991883b948bd2776ee6928a9c17d6b047f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: newlineSetMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"af04d1b771c2bb853e4a1c1af1afd286a9b6fd7e7ce00ab1bc870483fe04dfed"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: whitespaceAndNewlineSetMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4355b68035af34eaf8b170485e40aa3e089b4d88cfd9012a5962d1fe683d9d84"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: unsupportedNonBMPPlaneMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"512407c1b550700233f7f56a936cd6a96036aada91a8045e797d767558e77b7d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: illegalSetUnsupportedNonBMPNonSpecialPlaneMembership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"51653cc9daf9ee7bc89efa149891ae4ec996b70cd8b33c4e619457147357ea28"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: illegalSetUnsupportedPlane15And16Membership: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"d46e020f7c30a6e1cc000896bfff5613b81a7e04d0ce5e5b843b6cda00119632"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: controlAndFormatterSetUnsupportedNonBMPNonPlane14: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/BuiltInUnicodeScalarSetTests.swift"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a28a3c283fc4bd82d0a0d18eaa6d846f82ae027744b38e875c134a115f9dc205"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: span: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/ContiguousBytesTests.swift"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c155e5575d7ad4b2b63bc3d8894af8591b31f37e45b1f2a4fd5dd90d85d05a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: basicReadWrite: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/DataIOTests.swift"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"592e95f1d2510d973eeea44193053a6687b1d7bae76e82cef7a75f6e45c53252"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: readWriteAtomic: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/DataIOTests.swift"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e7d78b0dcb15f19fd0f681d6760e3bb8d714972d4e812139d10e64ac5766d0c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: readWriteMapped: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/DataIOTests.swift"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"d228a4dd8562ea8e1fd56e4737d170dabc7fc466ad2297e2d490ae11ae39ac73"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: writeFailure: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/DataIOTests.swift"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a51abc45328e3491fc885b7b59e3418f83fc37fe4683d230f7f00c8538fa51"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: hashing: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/DateIntervalTests.swift"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"c68e6ce4f8eb0f36331f09855efe10922e3fdbb223c7866a8fcc18e78df48b16"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throwCocoaError: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/ErrorTests.swift"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"cde55ae9b4186044704152f56d41c8ea7d5a46e8d7e6838e09529ed5d3d61cde"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: emptySequence: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/GregorianCalendarRecurrenceRuleTests.swift"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81582fe3d6e8fff28a7d3991c97520da30352a336ccde7eb013710eaf196485"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: testRemoteJulianDayCrash: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/GregorianCalendarTests.swift"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d9cd29bf9412163ac4eb921e6691f656489695ffd69fedd21b3f68865fba3f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: testAddLargeValue: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/GregorianCalendarTests.swift"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"0089d1c0bf0ea39eff1a7f4e4e217d256535b34911e67cba9b731d48a4fe6c74"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: hashing: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/IndexPathTests.swift"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb894f82748a7bcbcaec6cfe40dd1c70ef96878a8d79313cb4a32aa5e800b974"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: dropFirst: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/IndexPathTests.swift"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a0f9a1f970cec73b88afdec6be0a42038b8b436aa2425f84ea41452dc5e8305"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelEmptyStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff08c61d8234794be665966ebfd6523eb17d70cbb3a58efeb5a81d06ca572532"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelEmptyClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ece93d310c548caf44bf471b869ab1c99fc7eccf3ae0020d0d4b3b9ac2a91fc"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelSingleValueEnum: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3151417a103b76fd354e00e8d8ff8c38f1d56431d1972132b4615669c55c9d36"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelSingleValueStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e35d262412913d2af165b3b3eca8105ae1bd2130771b1494f3e1ae5592a238"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelSingleValueClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7ad10b5d417585f9f656272d5ff0cd7213505af63d2024d018c7d3a49620084"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a91933758dcc47b453e32ddf4536a683edda606f075ffc69056c1e1eedd8047"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredSingleStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6f8feb78991026098eada24d4d123467fa11aaa431b0a433d09561f3b1e875"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredSingleClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"57686625400f5ae28a8730bcee427bf04738ad0abbd09a3c81f6bc1b800d79bb"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelDeepStructuredType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd5b07cd892b5d01b45488f5aa1553df5f7207c3962202cece0c0217fe0fdd4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingClassWhichSharesEncoderWithSuper: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e81ee3647728557521c8b8bf7ce85fe579fea4f31cd9c6e70c6e74f9ce161f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelNullableType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"1317178d524df29d701043152664f5e019f263cda7e114294d29e406830807bb"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDateSecondsSince1970: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"4887dd33a11a207376c16842d7459b45d8c8ab5fdd8f146a13b627820e2a6ab5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDateMillisecondsSince1970: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"6714ec57dbc426729022bb4f0b50c13fb235ba7f2952c3f28063f8a395555e25"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDateCustom: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"af20bfc9dcf656f07ba3cf3d851cc730f7a5da0d3b5372a2eedda5afda93c3e7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDateCustomEmpty: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69ba3a0d58601fe78202968bd7b660d5a6013e19d96e59bbec1cd669467ec15"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingData: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c048df0059f4772f15f51c9871ad2fd6c15589a0cd81443ec53bbadc537c464"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDataCustom: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"b794d3d37169fb500bc17573fcf5444621d80c9e87e4f6377cd575d3d097b234"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDataCustomEmpty: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"cddca8073dc3f7841363c7eecf2de828399d9e0decf865204aa936bc63d17775"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingNonConformingFloats: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"54781e48b296a7e1371342e741c6342377ea35ed286f58453a1e427ac5fa9b67"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingNonConformingFloatStrings: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0642e0b85dfde3d055bdf8d6251980a18f5ff9a82696c4b4cc9d31f42c73517"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: directlyEncodedArrays: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d7650b70d62c9a3de7a6149f1dde1e0147363e3c8d1c217d9c8079efb80c29"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decodingDictionaryFailureKeyPath: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"d219730b63a1f3fe26d0a39eac34e60a9b8d19bb32f5aac9a710b56df99b2021"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: typeCoercion: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"c649ab3b3c60f022c8c12d6a632ed9da9425cec4eda1d79085ad07d9f43c2035"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encoderStateThrowOnEncode: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"de9eacfdb667a3bb014c0611b612601349bbbc8caed1c72975d3441e9be00428"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encoderStateThrowOnEncodeCustomDate: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae658bf95f7adb47daf699f182e9f6d2b5e3d8b378d1969b617dd7e9359adfee"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encoderStateThrowOnEncodeCustomData: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":747}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ed4c47a17116550baedb7ee269375b163d544bd58d837ca76291966eb11a403"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decoderStateThrowOnDecode: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e4859fe962d339a5b95a2faa75415e73304e983eb5bad5f9ba8b69cba314962"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decoderStateThrowOnDecodeCustomDate: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"6500b3bed197c8643690fdb8ff01af3f15d0609c9db3fc99cb48b87061bfbad5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decoderStateThrowOnDecodeCustomData: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d848f178601557bb91f045abc77dde35466f847763ac9b3df942e440935fd1b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decodingFailure: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b5d32d2fd0c60580790e2f3c607e007406b26f4efc99788989f17054429b52"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decodingFailureThrowInInitKeyedContainer: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"64ce5efbb84557df2b8ded1c235f59107e47ab3069fa271d9c8e9a410390535b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decodingFailureThrowInInitSingleContainer: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48d5f4521f61789eed8f93a7a69535d09ca5960bf6b46eebaeebe216c26aa44"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: invalidFragment: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb232cd9246bc486634f4f3149e55042b4286432b54d720c94b35b19d934492"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonEscapedSlashes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f7cfadfe5bca1603f92d753d11231223968cc46a0e14ba309fc83f62389cdd9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonEscapedForwardSlashes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"d81b877ec5008765840bc237f1ce46bc5cad7c85083786077b5da570868fc2af"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonUnicodeCharacters: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e12c09a8e24ea7bf4232dcdc99bccf9fe0bd974f13b63bc8f13ec497de6753"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonUnicodeEscapes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"29452383cc6debcd941cc03478abbcca4f675c870b96032d459c0e54ded3b48a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingJSONHexUnicodeEscapes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1150}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e7c2cc976560c9646dd429b12fa42e7badf0802055b4b485f8ad7a1ff3fff4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonControlCharacters: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1211}}}],"partialFingerprints":{"codehealthFindingId/v1":"b29c777d08bab04f9b72256b0ab3e33dc1019afe17df87d7d610d0e5736189d6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonNumberFragments: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e5985d4237258aca1064d71b381bdcd5982c91c4d3d8366f31eb21de885ec61"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: topLevelFragmentsWithGarbage: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1264}}}],"partialFingerprints":{"codehealthFindingId/v1":"587a0c9212cd3ade8f18e9c2e7aaeb2cdb5799c6453cbd604fbe6786b5320a6d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: smallFloatNumber: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1329}}}],"partialFingerprints":{"codehealthFindingId/v1":"080b41e4e99adfba322431d2a0862bb0dc83fd38b0beffedc22ebd866b72b8ae"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: roundTrippingExtremeValues: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4a565f1c67d70bd936fb06177906a19f541ac9b2d8d9cba69bc2d651a246d0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: roundTrippingInt128: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"7134b346b00a61d207a316522407070bb996e80f754fb904b28d270dcd832bd5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: roundTrippingUInt128: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1431}}}],"partialFingerprints":{"codehealthFindingId/v1":"1226d7dad8cc2a09de713092dbe8008d7c9e1631ec5504b9e806e3f58eb3c21c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: roundTrippingDoubleValues: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":1464}}}],"partialFingerprints":{"codehealthFindingId/v1":"2441ae680cdac6c7208e88896e1383f12d6846231639964cdd5d2606ed41bee2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decodingStringExpectedType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2407}}}],"partialFingerprints":{"codehealthFindingId/v1":"71697dbd75c7c0ab43efc9ed3f77dd843c7514b0cb85ee8ddf945fb58d361642"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonPassTests: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2551}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5be4b83af3343100565d20eeffc11d4dfe7b44275c61a1ee9f69e320ea2fadd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: json5PassJSONFiles: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2573}}}],"partialFingerprints":{"codehealthFindingId/v1":"108ac9157f64f28c4e426ab3889589b207bef16e6875f6946c81e0c411669e00"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: jsonFailTests: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2591}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46994cb286e30565ca4be031ad5f45a556224a8ee1f45645439dc4f27987a3a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: json5Spec: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2692}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb9065eddb634f62046960d95b60e95d2bb96dd9e48c611be0ada8113206af8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDateISO8601: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2819}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6837a1ab480021fcfc9130245fa0afd408c8c76a3531b42265b9e0baf6cdc8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDataBase64: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2836}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe137b03196c98601da438d4705b2dca92b12006e27024c02a4589e7551e2e74"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: interceptDecimal: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2849}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2f2cd5418a92bd4a71aaaaebc571b6713f6ddbe197887f4c50cad53b2405e6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: interceptLargeDecimal: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2870}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a55b1eb2b463e9c502b59e4034e1c9c0ad6de8863306dd4e6b9f0e72c40daf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingDateFormatted: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2909}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c10c2fd811e69190af1c471f19d49c5963119bdfe7edd3cda8935ba7d0b4540"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2945}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e9fdeeb758d031dcdd6b56384b4138086669492415c9a28b4eb1116fe21253"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingOutputFormattingSortedKeys: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2952}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fd8b9553112e227c6079ba643d93d51913a98764182d2973ec019277e4c143"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingOutputFormattingPrettyPrintedSortedKeys: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2958}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d79ab4fbadc82146264b0bb70964c0701b8bc8bd188d6a1a8aa0311928a78d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingSortedKeys: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2964}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6e687bf66314aac3dc1b0f752dbba592b2a93f476db39cac0e3bb75a8d2e20a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingSortedKeysStableOrdering: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":2989}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fe0cce650ad6c7dd72b76e500bcf6c17426054b33fbe019375b20f7abfefff6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingMultipleNestedContainersWithTheSameTopLevelKey: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":3021}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b0aa455efe57255d34c532970b877622622cdc2a4fcca7226839590be0d20e4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: interceptURL: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":3130}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b834125589b8edf8e013b0a8ad19ebcc3d27696f204134bcb8c8e6dedbc226"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: interceptURLWithoutEscapingOption: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/JSONEncoderTests.swift"},"region":{"startLine":3140}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbea75066d4a41e78b9f6615c0e26bac5c1639185030abcb5e5d05e72447e8c1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postWithSubjectInstanceAndObserveWithSubjectType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35e45e8d5ff050d2c3be7cadfe038dcd12444d01ff82c4a852297d37d22fbb4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: observeWithoutMessageIdentifier: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"c837f8eeefe32a986502f5a02c3c46b195a44a6d22c2578bf6ae434994ba788d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: observationOccursOnMainActor: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"af9492c5708d8058d8a8c1284e0217d837e645126c7b2f988f6fee621e52e770"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: asyncMessagePostWithSubjectTypeAndObserveWithSubjectType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"44913260570db1a1eb8131f63ac7231df5485a3a32a2cd89f5d1d70bacf7f03b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: asyncMessageObserveWithoutMessageIdentifier: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a5d0e43d07fdd0f23d53eff798724b76da15a89df2d69f34220e378dda8110"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postMessageWithSubjectObserveNotificationWithObject: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"66690d9578e91a510341d4e09b80d800d86a8796ce517ebd6b933055ec42c29e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postMessageWithSubjectObserveNotificationWithoutObject: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe5e278ee7750da00cdc314076766ce757f674ae6fc27d8027f192bb32f1cbf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postMessageWithoutSubjectObserveNotificationWithoutObject: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5545d00944cb8e4b91a058e3252de279008da65b70456504759ceaed12f73b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postMessageWithoutNotificationConversionAndObserveNotification: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb12222f138e13982dba7bf02d6da00078e62a7cadb71b4ad99fe18fba35495"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postNotificationWithObjectObserveMessageWithSubject: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb5d6989b4fcdfc0894d3454a3318a1303bd0633f037319aed80a9d07b94fb32"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postNotificationWithObjectObserveMessageWithoutSubject: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"47466b2fa0fa1bdd2178ba67c954ea11659b15b1b57419fd80f92b46301e5437"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: postNotificationWithoutObjectObserveMessageWithoutSubject: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d5aad6903e3f4603d933af9d31700adb958dab0d4472ec3f21011473f39aecf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: messageAsStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d2e789e16ca7b2e7a5ffe5323d301b0cd1a5c3ae8398cbf5683ff029cd3536"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: messageAsClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9dc5abf8ebafbb2080b1ca29cbb88c444c3484bd0d3bc1c5b1978be1845353"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: messageAsEnum: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"70823555b2b581a61d3f4134fb2be0fe601f0d1fc8059904ecdaf18f99035576"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: messageAsActor: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/NotificationCenterMessageTests.swift"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ceed7c36bf0ad41e28f904b4d2c5d6c875b29d4146caffbfadbe4c683358cf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: resilientKeyPaths: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PredicateTests.swift"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"98a2dd422a67b75a5ceb0d2dfad723969e0b7fcc68d7c7fa4824ee835f3d1a4c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: finalKeyPaths: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PredicateTests.swift"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6fa1becf4d055d2f77e2d8091e60693b99997a668b02aad739cf19a5653181f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: genericKeyPaths: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PredicateTests.swift"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e601964191f985d281518070bce9005331d0b3522596ffa3ebfdfc5ca309dff"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelEmptyStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"a394d4c0a4c4fcd73d083c457c3828845c66d7c0f2d2aa4df715795faf2e4b6a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelEmptyClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"15ec4421569de4b080e2be17cfb06d81d2a26850dc26abf41d759552e908e363"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelSingleValueEnum: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5b9760d27b2c3508029c6f9680d5fd8cfa7ac01766cc218ad264ac028772b12"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelSingleValueStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb40aedab4a3ce31d1ed1b47bcd5e3cf2496a94c176b4ce17d90764c5e8c2317"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelSingleValueClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7786bc74b79dcdc67af6234a3af2e0018cabd0a3dee30daa5e9927540085dd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"9efe449e4f8cd7b8c68f08256b14da6528d2c4b33243e160e08deea6dc884abd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23a44cecd94a1587a83167160bf6113bce29e47cf050020a3337daccec4086f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredSingleStruct: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"7125082e8949385624e04d30d55d88e7028472b039cdfbe089ed787be029f360"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelStructuredSingleClass: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ed8075ea8caa5811515854eb3a62c5ae6e14c90ff64e5b6b080ffcefdf1233"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelDeepStructuredType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"d999dc9cd79253ff19412e9bda57004b5624e1f802770eeeaaa5d2dc87592e4b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingClassWhichSharesEncoderWithSuper: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d4951d43dbfb9434e7891a014129d4c4d261d7c61caea90c1c67aeff3c37b5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelNullableType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfdc3e508f379ef431c1f037ca9b7e649502bfb7ad53b07e3f83576f5918bd09"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingMultipleNestedContainersWithTheSameTopLevelKey: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca5d917319f8e6f2b77cc6d632ad4f37360973f847e3c2b252f7f58da86c76e7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encodingTopLevelData: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3f16d762c26d1d88e6e8e82a49301d239526da1b2bc01b08b2d12c99f88d3cd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: interceptData: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"e60ce1a54f3f814cffe046459adf52b8adfb094aac2359df10b220121f18e6d7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: interceptDate: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c59d81dc0c27636e34a80b012ee4f7f2005ea556f1d018c961e66c746f779dd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: encoderStateThrowOnEncode: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe4fac3b4533e752f68b29ed0ef4242faf6744fb58a156385715177bdb2e6961"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: unkeyedContainerContainingNulls: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ebc0e82a05b3ff663742a18d135af86ce94ca4eddcda894bd31cd17dfa069a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: binaryNumberEdgeCases: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"228ed58a0e3219057b5afb3667d1af596245edfc771a2f874a09a49372ceeeaa"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: oldStylePlist_errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":938}}}],"partialFingerprints":{"codehealthFindingId/v1":"364ca7f2229e7e7747dd4e01421ba54442196b57a9dd419139afca12f430d9ca"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: oldStylePlist_stringsFileWithInterstitialJunkIsRejected: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"f229653aab32ac9356d031c7f78e052524205f7a1abc71622e3e5515bee04646"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: badDates: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"d69c8ceb6bb556851668e40ddbf30899f2b8bf5b729370728ef70890004290ca"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: farFutureDates: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"a710465214011f55d16ba48dbe77063f835ad55aec0b45368a4d148baf275643"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: roundTripEmoji: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":1322}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5873c99c55b662a9f353fefb308b7aaac2c6d9a8a3cac553d444dc92dcd7130"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: roundTripEscapedStrings: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":1329}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1fd258be59924e7d86a107b81dcbaf9cae1bfcdbc9247b5b5a1fdec5a5b856"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: multipleDecodeOptions: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/PropertyListEncoderTests.swift"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"6840903742b866241887e4790f8ec311d6a96263ca6974552e5b4437d95b318e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: testRangeOfString: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2619e52c16bc5710c613d647b892c6657e5a67d6df38408b191cb862c33ca0d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: testRangeOfString_graphemeCluster: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"86c1586823c764b96d26fd31538d2b34ee6235cea54e978ccf7de3b72fd98ed0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: testRangeOfString_lineSeparator: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2531652200c0f2a87419b3e0d75941cd76abe60f588d46690c0f6c68b6c7093"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: testISOLatin1Encoding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":1468}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7deb207f3f1d78fc2b43b2c3be1c7e679ae0796d89fb2ecc464bbafad37514f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: testMacRomanEncoding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":1485}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1e3b296b1de952ed5bafe8ddbae723daebdbd7cedcc339795f50be910e0064a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: NSStringEncoding_Hashable: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c7878000cbeade94773aea5222509918d08806b19416f76f8f8a5bf25c717b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: lowercased: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfdb66489ca6939dde8214bdc0e2ba2db93791236c25f4a3555aeeb3fdbf6ad6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: folding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":2806}}}],"partialFingerprints":{"codehealthFindingId/v1":"f202566f77714b4142023928460fa0032298bee87de48b0ed381e528c71aa568"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: uppercased: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":3106}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee49ce9db3ad16673d3702b638ef61423c5dc5549c47a25f2ddf9da8426f017"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: hash: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/UUIDTests.swift"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"020fd4aca5d1d8e10ddce81bab324c01e15b4dbb7204bca16ee92949f592f396"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: test_nextThousandThanksgivings: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarPerformanceTests.swift"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"923109cba1eebd4d2ff2ee4b11a9c1762174270846aaa1e70ad5cf9ce9af34db"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: hash: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"528a436abebf49a0c2d69b828f626273ac4a8439beb47c94c221d2265ddd79b0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: ordinality: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"41027fd61eee65a5521271d976b7cb7b224e3138440cfe1e1fe712e8c9b152d4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: ordinality_dst: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a59a0a17e8bde8da481f581d6cac0283ff9d5de8271dc3b126839bcd35980b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: multithreadedCalendarAccess: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c1b2fd2764348761e9fafe7b1407f52eb912c72f4a5214aed0771d77139819"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: range: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de1e66ba5eeb877f822d52a0f9f83751e6cf73795fa8f8a652c61b5da89b954"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: range_dst: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2524e057d64b764089bf173981c15e43a2b6266402bf40355df411f28a144f9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: weekOfMonthLoop: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbfec7822046194b0efac8c60b1912eb39f8fe9de59f1bc971c4663648faa1aa"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: dateComponentsFromFarDateCrash: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":1255}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a59e5f5da118cd9cff13baf3b2e058896aa7e009c5c3973317b83f2dda424f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: dateComponentsFromDateOverflow: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":1587}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8e96a955caa21a02a35216b95e4986f8814126541961c9f6efc127eaf3a2005"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fuzzingOverflow: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":1600}}}],"partialFingerprints":{"codehealthFindingId/v1":"d97aeee94762109c276a4da3ac0bad513e98dfc8c8bdd47019e44dbd7c18283a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: dateComponentsFromDateCompatibility_DST: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2042}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac720828a98f5143f8a405d72f75bb5a9045c9fb4893822bfabf44d6b1ecfaf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: dateComponentsFromDate_distantDates: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2119}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ceb5eae1c2717003590e5e5ddedcf97630e8c4b2175ef8a039c221fe8cf3122"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: dateComponentsFromDate: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2151}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d87f50b5216d9b696963b73efb9b093d81ae48c3f298ccb8970ca5750a90b6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponentsCompatibility_singleField: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2188}}}],"partialFingerprints":{"codehealthFindingId/v1":"304b3f3ee7710474a12f6ce9c8d68adebe1333b07ea7d62aa43c536b5c16472e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponentsCompatibility_singleField_custom: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2242}}}],"partialFingerprints":{"codehealthFindingId/v1":"d261e803acaa4a4b64dd2b64276aa724c048daa17fa51d3724b533f260dfc066"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponentsCompatibility: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2299}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0be50bbdaec7bc1077211e7ece7b76d190bc260232387403ff3cbe0d9a38ad4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponentsCompatibility_DST: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2329}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2792abd30d0e5953633319bbc02501727eeeaa18e2d1aeae34ec8de9575e23a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponents: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2403}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dde51cedc402cf2ae3e5243b73e4d1736e64f04bfd743fbf94097763bf684f1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponentsWrap: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2417}}}],"partialFingerprints":{"codehealthFindingId/v1":"12cb1ffb89672fba8d8131018f7a84599f0910ce8314f9af315e87a82a5cc5b3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponentsWrap2: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2432}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de28e8f72fe6047e5a43b89a1d2c4970b01909f0c898142c72a61cef3516319"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: addComponentsWrap3_GMT: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2445}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89c482877966691828e700b78b0748989aefd5785796b86cf527c93b550d97a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: hashing: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/DateTests\u002BLocale.swift"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae06a91324145cab6ea81a3ab7d173bd0b3eca5cc3fc514f69315b8e43cae1c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: localeComponentInitNoCrash: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleComponentsTests.swift"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9ee70c780f61825e46cb951e2d7ecb61c843134378532933d74d946077d0bd6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: createFromIdentifier: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleLanguageTests.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff6612bc9a323d34f0293860e6733fc34dd0b224962a8ddfa3e41f94466a5ef"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: createFromInvalidIdentifier: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleLanguageTests.swift"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"260bfbe13c9bf4af6d9cedbeadb96db4e7fc18930997326f6da28e7d5b4f2c4a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: properties: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleLanguageTests.swift"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"d050e9e6916a687b5a5730acbacd0a86a787634e4d5651142d49ef338e961797"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: identifierTypesFromICUIdentifier: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ffa94005039e13b9348862e17f84ceb0d095f5ccf260bd44cca99b5ac42c44"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: identifierTypesFromBCP47Identifier: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a76efe8238e7d7ba9e75514ac873d567cd81f4a39720cf9d4721d9536fa780b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: identifierTypesFromSpecialIdentifier: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"605228dc1a1352b292860b1e62c0d3deca05f222f6bb530f1b2514843ac747df"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: localeComponentsAndLocale: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"17cfd29762c3210a44ef80fb1a7df37b49a2d5994ef2c81b03ae0f6aa5d39e01"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: defaultValue: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"b907db1f4fd4fd1eec939bff94a5ee380676e2307d5680edac4db0c6ffa3953e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: keywordOverrides: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4dbece5097bd9d157bfb42efb2749fcc28be347bbb2dfdc28dfe236c1365b5"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: noBuildConfig: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/BundleMacroTests.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"355042ee502bf073d55561a06c2c3769048a95b923eb983b27fc8cc7dfcefbcf"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: simple: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/BundleMacroTests.swift"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"2660e3b263e494ed42189ba81255040048198878a700e54aa0b8c69d7c117103"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: simpleUsingParenthesis: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/BundleMacroTests.swift"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c97a9793878410f5f92298dd27569bd3aa4e71662ed30b3027e516ed050e9d0"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: moduleResourceBundle: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/BundleMacroTests.swift"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"e56a357349ca3ddbe836e163b138aae1279f10f6d9a99abb9c687c44c5bc5770"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: lookupHelper: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/BundleMacroTests.swift"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8f894148ef0905599385a9e15f99f2e533d67fd200a6d2847ee84eb35e487a"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: simple: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbc337fc22bda058e441d11065667f3b3d0bebbc9d947ee3981d95421548cc17"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: implicitReturn: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"49f2ca392760f8be6ac69e0f97ab79e2bbe8dff7ec3e06740cccf9118c7a5261"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: inferredGenerics: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c438c14d840047315a8796d7d004c029f701b85f27d7817fe9374586887cf2fc"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: shorthandArgumentNames: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"3df109a4b86f7d85665eb78b1a163d6502023198db4261f2143be561b01f3496"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: explicitClosureArgumentTypes: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cecd6854898349ca6ec45a43efc17aeae490df6a63e907e11ebb9add766c04c"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: diagnoseMissingTrailingClosure: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2a4b5c569c0252c71d1f89a49c70f580075a33516fa2667e5b53136b79a7faf"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: keyPath: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0971ec56e8c908f794539cc3d5eb8fd9018013f105178ec0b89df324bb377eb"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: comments: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroBasicTests.swift"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"46870201caf3282e03cbdca03ed160fdf242c2b9d1ca884540722b86243a8e93"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: \u0060subscript\u0060: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9a9daf81f693e81327bdfe506e32f3673e53ef3e5120cf3d60f023e47611231"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: contains: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"db5b0af9fc844eca46519f7ae356e1d17d092c54dc41cba798196e0dca75b577"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: containsWhere: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"1627542d93be20661138d5b66e11294ac1bd8c1f1bea298f0a11008242431c7e"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: allSatisfy: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"06059b24e82a57b57e21e5a36f02f7cfa4f38d1ed5db1c17bac6dc97522a697c"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: filter: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df28d9473ab4b788e12b91beb2bd72f9f2a26ee39b9c0470f4f4fece119774d"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: startsWith: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef39ae421d5d020451f406fba1a8f505000971eba555cf1689af47dca6041c15"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: min: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"39e2221289d5960def7e3dd91ffd85ca55202c7325e1a4ab700140d26ba920bc"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: max: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"c89c1ade451aa44fc2c7179eb8f4fbfd1683fa958da2259d204bfbe7642fb74a"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: localizedStandardContains: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"c38182fdd608de539df29a9fce58b58b48da72da13197ca0a7c332efe87bc46e"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: localizedStandardCompare: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"e27d509f813bb2627ae8919ebdbb7defc86479f93c7d86d9502ae27c092ca400"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: caseInsensitiveCompare: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a8cbdb52cd2e50f863a0c7f68975ef9ca4848e27d65c0fefdce9a790326544"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: evaluate: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8a82e021ad288965ce8ad6ea56982ec7f31530eae8ec7b747d62d91a1074927"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: diagnoseUnsupportedFunction: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroFunctionCallTests.swift"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"2677a47a6c4b01ad9ea51181c91bcfef564c325993370ea2a00a1fcb57dc7e68"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: equal: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6cbcef5d777247ddbe32ca4f675133ab9685184c67f57f13d9bd64aaf520945"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: equalExplicitReturn: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"029468a135258a99eaf639307bc033194d86eb12df73d787a0aaeb6f1d10c497"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: notEqual: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ccb11ae5c35e92950e19e6fef0e58039b0ee475d88a58d1c6161dbe33a629f"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: comparison: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"740912d9de7e4b5c4bc5ecd1952564505f8280a6857a7ecd4aeb115b1f5c885d"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: conjunction: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cf5d4c0c699eb1b549b4c6bde6f50dc2d7b850fb08d005ca11f307e28b36300"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: disjunction: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"2adecf34507a4e755935b8f5d9d7e206e93e5add59d694dabd434efdbccd3205"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: arithmetic: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"60cd3d77a2ff9fa3b1e9d982587e3fb8185a0f42834f6cfea45c0268ee3fe508"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: division: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a3f1763b3f66e28e513b6719473511bd4301c0461765db8b564d76b678dfd94"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: remainder: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a4b07f49571f31b731b16248b91bdddd84b35a10714fa48311c3b98c06a593"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: negation: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f68563a9ffacf94230678e5d549c3d8ccced4ff0623a4df008ca8c58ca606f7"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: unaryMinus: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"92c2ed4664c013c5f7b03d0fd02af7b2774261b714bdb05b620bbbb026f65f2c"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: nilCoalesce: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"e107fae4b95a8bf0c1f0b32a02d322bc00a2cc2a801c510abff46f7414c264a8"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: ranges: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"f109bf1ae86a9e1dcfa0f482098c574be8fce7d6c272615ac9b087e75eb10425"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: optionalChaining: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13e9238e41744fee9f62c96754f5b8a703e09010fcf06d223946911ec2aae8d"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: forceUnwrap: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"6344b16cf8d745ba815d7ab4d049c73133d06ce70ecd749cc28e052ec3ca194f"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: diagnoseUnknownOperator: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageOperatorTests.swift"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"235153bf441347309b1ccb666ee6324c5ad1f2429959464f97f6ee3a18a427f6"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: conditional: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageTokenTests.swift"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b561d3667c1765a1874b4aeee6fd73848234e885fa6eb60cde0a15404cab3c"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: typeCheck: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageTokenTests.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c13b5d9aeb021bcec075db80e87540f29b117d3627f2d80e196030ca4eb89c"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: conditionalCast: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageTokenTests.swift"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc9eccc9204a6f47620b0e87563df4e096502e64c160501e8be53ec4c1070fe"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: ifExpressions: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageTokenTests.swift"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"80aed7422089cb19600811452435c6755e52428336f5860cd33e178c1a5f9bae"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: nilLiterals: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageTokenTests.swift"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbafc1ec850e308dceb5a559306123501c3bd37079e6bd70025ea00af2add65c"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: diagnoseDeclarations: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageTokenTests.swift"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24e41a8d7d4244670c18608e60ced6413f7077de011e02767cb0be4c52d1349"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: diagnoseMiscellaneousStatements: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroLanguageTokenTests.swift"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f406362259d5d1e066e44f6cb8c11ba0c92b28954221f70c79642f8d23153c"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: usage: No conventional assertion call was detected, and 50 of 50 tests in \u0060FoundationMacrosTests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/PredicateMacroUsageTests.swift"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf0ce3896b3b6a8934ed649299beff887b0f456d702bf9271dcb5627d596b74b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: topLevelType: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringCOWTests.swift"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"874a69b5b72e6cc20e44c86a52d146ae0fd9c165553f1787db1e98b4358e5b95"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: substring: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringCOWTests.swift"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"08acba755d42b1f3b989fda543e652cd03a6760883c04461baa459b30e7f14f3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: discontiguousSubstring: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringCOWTests.swift"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"31135e969c958579dc90537d7616aeeffc6f225053817fe61dac72045bf15476"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: characters: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringCOWTests.swift"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"4888ebe4bced2b98f66e8af1276b5d81c95752f1eb95489c36a72c3a9c9d0fdd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: unicodeScalars: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringCOWTests.swift"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"c023024ee0fe059eef211e9b157bd06bb0c3e3ed8e5ce9ef401b070b9199dbe6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: genericProtocol: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringCOWTests.swift"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bdf67fe88aeccd0b9ba42a51415dbdd2df627ac2751f9908cb4095af239be3e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: extendingRunAddCharacters: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d0e9668796f51d089a8fd07427ecbb5da575d86888ee959b6e5e970c4d6f08"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: extendingRunAddUnicodeScalars: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa2996a4d28d0b13f3f13375293551b25ebcfcbf96e4759395657f4f06113be3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphAttributeExpanding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"e50ba38f7c690c20dc30c897442024d704ebe4aaaea1b405622a73f428cdf6b1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphAttributeRemoval: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"19f4bbe29c5abbfda125887a9bf94c209025570aad84c505cc5440b1f9acd3d7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphAttributeContainerApplying: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"990bce15ae1e6a49bf660567348383e886df3620c7a5911d1ea1cecb494ffcb5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphAttributeContainerReplacing: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6ce877e7a571c85ee65c2bba6040111c395ef97e200897db1a867c5ac453c8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphTextMutation: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3ac657faed74c07ae03bf4b3ab502c788837642b6a7f16778d4a5add8079b0e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphAttributedTextMutation: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd94cfb39a7307b52b2c086c692aa3b9b7853db17b4d875e70b2f2c7cf95c688"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphFromUntrustedRuns: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e5bd1049d506fee15c4e5d2980c45565819c5cfa80109aebd01885ffbf17235"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: paragraphFromReplacedSubrange: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31cee126800572a37d823f71e8030db733fb824ca601081dc59b04db8fc8119"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: characterAttributeApply: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"67904b3bd1a79c8d8c8bfc0c7218b1a06242baac23de17034d63ac1edaac0d61"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: characterAttributeSubCharacterApply: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5838e342d3f7f41c5f702e53dbb1300aa1c6975311068b0dcb0853c1e45343f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: characterAttributeContainerReplacing: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fb86b17a71fc95d0db6b8e69042efe97707d17dc105edc0909ce408d7211043"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: characterTextMutation: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"16fa69bf6ed5ddca20893a8c7afc725f95fe1acef5eca543c601e36d7cf9a220"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: characterFromUntrustedRuns: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e358f477719691cb2c1eba45ba9e76be458ca30ad83c184ed5b951642701549"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: invalidationAttributeChange: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"15fa67d1d88aeeec566dd7b8415aa5c48db1e65cabf0f9a07b3037a8e5b660d4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: invalidationCharacterChange: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eba29b828056b43f21564c7955f59fb458ac3895a8b4b120a11be1aee921207"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: invalidationCharacterInsertionBetweenRuns: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringConstrainingBehaviorTests.swift"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"2828024bdb96f269ff63df65decf783e14b640e849ebecda9715553f55a1556a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: emptyEnumeration: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringTests.swift"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b507c44d83b9bb26e525b425d466778382442df0411c128e900734b1022038"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: nsSliceEnumeration: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringTests.swift"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ba83f0af2c3487671bc030d7569830907238c14b5e38de7c89229581446811"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: getSetAttributes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/FileManager/FileManagerTests.swift"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d1164f0718ae5a35a585f1893a5c0d04667fc68b73f052fd57e8588df2aa903"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: numericStringRepresentation_builtinIntegersLimits: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d45c0240a62af88ae2d90a1be2e09b3ffd92e8c1782b5fbfc5fc9cdbff5822"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: numericStringRepresentation_builtinIntegersAroundDecimalMagnitude: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"32bc33ea8e26c0e8cbeeab2ba509f1fec09f2bda575e0a9f4b6cbdcd92a1cbb1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: numericStringRepresentation_largeIntegers: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"001c72687b404f6b4494c2e2c5c59ce6a9f93a6d77406269be0afa9ba61636a5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: numericStringRepresentation_arbitraryPrecisionIntegers: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f5cf8cb53763f622d0e60f3a7ba0776ad5d8d5de4aa2163f0d41828d3e3f34"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: int32: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"088c61145f13c0b1346c703079867291348e7b86dae7d29fa499f09d6b81d35f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: uint32: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"f539cc019700314896aae00371f25bcbcf9c86a816f0822fe84bc8bc8f34a8cc"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: int64: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db21181f5319c752474223bb2ea0d7802526b7f1aafe8f38550ec9b0b1a760a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: uint64: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c89289baae09cdee0a78274b329ea98bbd3bb8cd8d398e7bd4b6f45c88e6175"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: int128: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f53f3dd14e670a534fb02fe29b4e17902b5cab1d131cb13b4365fe7f12f8037"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: uint128: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d6359a4eadb6a34a321a857f6d9de8e518870ab960a09d688e8e9ad2ef4b06b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: wordsIsEmptyResultsInZero: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"6de1ca3fbd2f4b96f50ef4bb83834728946b8ec0ae58bf6a56ee38d0bb7e325a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: signExtendingDoesNotChangeTheResult: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/BinaryInteger\u002BFormatStyleTests.swift"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"e64c44df4391ae113cab27596e74016f32d0571956319b3a917dfe70dd18c874"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: leadingDotSyntax: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/ISO8601FormatStyleFormattingTests.swift"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa1ae1d4ccdafc0099fac3da34bb847308230baf4d9fc9656dc04de73cc54d29"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: matchDefaultISO8601Style: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/ISO8601FormatStyleParsingTests.swift"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e917b2068c360c7bc68e8018b463e9e8f5837dbbea921ff1c372df72e90cee9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: partialMatchISO8601: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/ISO8601FormatStyleParsingTests.swift"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"24626b418681c3ae5d8f2471676ddf26d86d2a9848899779493581ff22bcaa21"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fullMatch: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/ISO8601FormatStyleParsingTests.swift"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"223d7dbd66fff2d2bb5cf0c15a22fef04751a88a5ccb2534992295b47c9350ab"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: literals: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f366d48ded4d4015d37633eb6a02386142d70e4ed9c749ded8737367f4ec99c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: separators: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"f238eb0c649e5ffd81cc78c441f2ff27b168a0b7fce75b3a0aecb442c4dd0bd3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: simpleStringExpansion: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a71222e60001cfc8f6ff37bad725206665fafde6c0195c7c24d96443f7d1be"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: reservedExpansion: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"055222077fd3fd237e95cc24273c08d3d78854f7d5e4fd418540010159431b1a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fragmentExpansion: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"0271b5b6f31f630d3b8036e597f684646ebef317f16fd0c0b835f4aa029542ba"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: labelExpansionWithDotPrefix: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c737df16ef04afc74165acd39efe60cd5ae651135ad3287f8bc9f405d00453e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: pathSegmentExpansion: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d7abe8eaa9d6dff9a271680155ed5b2c6a701627f567f716bbfdff4f91207b4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: pathStyleParameterExpansion: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"f11ca6f4c9bcab76a5b0c23ed195b646ec4fa8872d05d0f794564d8b75034eb4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: formStyleQueryExpansion: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4cb71a068f8ec7087f10a364e33673864fce21c6de3b6e5d2a1e45756dd2c2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: formStyleQueryContinuation: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/URITemplatingTests/URLTemplate_TemplateTests.swift"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"34363ec094d24cec0135e638ba3537ee2661d6f7c7ae478ba526915bedb3caa1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: concurrentZeroFormatting: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/ByteCountFormatStyleTests.swift"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"af55a1733bf028da2ed1e02768055e2d0d41516f56bf165ba76017c183282497"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: hourSymbols: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdec5642977bed9e88f828802a61899113418f4e4ef78858d198189fee255d9c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: storedVar: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"837ed64ea425dd65d44b2423a08739122fed5dee54f6797f57f70658ccfe66f3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: matchFullRanges: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"24630204f4e188b3266f0ceab3049487f58b8d67f85584d19aa384106f54b990"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: matchPartialRangesFromBeginning: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1201}}}],"partialFingerprints":{"codehealthFindingId/v1":"b317c50ead3a631356664224a866d60b0474ff3fd144a7ce4e32138b8b9e2f07"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: matchPartialRangesWithinLegitimateString: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1217}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a2f7c8e666ec041f2b6bb9ed16dc9e1cb9554e18ca1929f5df9229844e7363"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: matchPartialRangesFromMiddle: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"78bb0bfce0ad3c3fedba1c9f0162bcdfb1e97f9e6755aebab7f3fc762cf1471d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: evaluation: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1447}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2ba9931df41de8cd0ed5dd08d6a1e21f979c33f149ea920d5c995ef189ad5b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: randomSamples: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1633}}}],"partialFingerprints":{"codehealthFindingId/v1":"a690b287c5defddac0f1bda7bd978073832f7f85e643f5f6e88fae0faba238b0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: counting: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateFormatStyleTests.swift"},"region":{"startLine":1681}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f183d18ecec209172f8936b2c207cdac7886c81c4e282d2226ac85783155c1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: counting: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateRelativeFormatStyleTests.swift"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"918b086b452a3484f2848952c0d280b5b4211423b13c6349bd2707e892b5b358"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: randomSamples: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DateRelativeFormatStyleTests.swift"},"region":{"startLine":950}}}],"partialFingerprints":{"codehealthFindingId/v1":"e251af1181f1d774b115b0d795528930098b79b869e2667095b55fe036a91a9e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: durationToMeasurements: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce344952ecbbe4973cc8008fe9731733262f26905555c1b7044a7f86fed60fdf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: durationRounding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccc2c4933953218b2aba192a068cab98685f03c734bd07794e03249604cf374"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: durationPatternStyle: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ef630187fc7d2aab3b08da2f58242d05db2f9c009186900dac5eed155e2755"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: durationPatternPadding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"844071f9751b283ec55697808b4f275422ff4fbadfb412a1af327c388034b138"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: durationPatternGrouping: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"5221887fb02a1f26efa47ea8d1d06e9a5a8decbfc73d677c95d05edbd25f8cd2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: noFractionParts: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9ae7179016c48c7d34862cd08c28f3e1e786b957766be3e3dd0e0785ba92081"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: showFractionalSeconds: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ca451cbb6593b0e274a36f14390c50613c6065f54adbd30c2aa3103b33ddcc0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: negativeValues: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"56a296b3ae06ec3807209e1bfc10e7b88f50c16ac2d14dc6c13cdff91fea098c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: attributedStyle_enUS: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96dcf8b7f034bbb99e926c5a9e90c1dba3ec56ffad17c5ebcea126e8b3a611d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: randomSamples: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationTimeFormatStyleTests.swift"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3a77b119aad3e29271dd2a8c71aab07ea4352e32d320c73cf32d94484e41878"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: noFractionParts: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"e19dabae8b2e849036d826af7f92e1ab2577c65fa67aad95df03530632e9796c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: showFractionParts: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"d363aa7fdb84de94c3dc3e2df34a19ce07752df813dd693bb68069f87feef3b0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: maximumUnitCounts: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b81a0edeac85b2c752a4bc3028405e7e2aa5e66ae917495c4fb112575914999"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rounding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9cd4e8ad6b0903e780a7ef645b49307aff3e1b270821a36ccfa957065b2ca60"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: zeroUnitsDisplay: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"839039ddb0f48aa5fa3e8b6c7a7b154bc8acfd371964613972896e431ea59c76"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: negativeValues: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"c15166003abcf5d57bb727a95d143bea8e1eacacdf72336cd5089b90a9b815c9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: evaluation: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"075dd3aaa6a2ae1f4fc14d826003bca56ed28550b96c9bdb4aa2c8a1bd1bb346"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: randomSamples: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/DurationUnitsFormatStyleTests.swift"},"region":{"startLine":1388}}}],"partialFingerprints":{"codehealthFindingId/v1":"db2ce5167be9a9f48e501e69c4337578062e56f7bb100dece8121dd0293d0669"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: leadingDotSyntax: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/ListFormatStyleTests.swift"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"95c5ec4550ebcf398d4e8717ceb820aee43d9f8d260a1ac5b7e3f5e967e753cc"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: integer_Precision: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4fe3963d23a37e6054396eda0ef483a84db5fa7608213ac8aff9ae3da4939f3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: integerFormatStyle_Percent: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"a340453d9404b471ddd49896322df60be874cc2063f9855f0fa5bb7a33cc2ae7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: integerFormatStyle_Currency: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f0ff0ee532aa204d6f8ddd38f3fcaf72cd3a1362da3b61b067502cb0df4d998"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: floatingPointFormatStyle: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"a28fd002da740aeded236d26af93354e5941985aeeea80e715244326c709f4f0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: floatingPointFormatStyle_Percent: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"a69a067e16615471c64709ec44df0f8fbe3c10d7b36f81bca94b220318daaaf6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decimalFormatStyle: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c90aa1724b929a38deeff6e6bdf46faa0ab9f3c07cb92b4e707a3b8bb7f9ab"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decimalFormatStyle_Percent: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc65ae80c9c8038143a83456ada90f97d9538010aba084bd32653aea59f8813"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decimalFormatStyle_Currency: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf6d17c121ea7411731e8014516c21b60a72261511b818ca565247bda8ab29e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: decimalFormatStyle_Currency_groupingWithRounding: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"240284982857eafaf5bdc38e5af44dcbfe5182a95aafc3e90f44dcca22427e99"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: integerFormatStyle_Consumer: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":1836}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b87b7be06e95ae9ad14ec2072086dd15f929e861aa71c0a72eaa98d5fd04c3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: percentFormatStyle_Consumer: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":1876}}}],"partialFingerprints":{"codehealthFindingId/v1":"594816efb4728e81e46a5f1a589fd46ba17b1456ed81076e65cb25aec56733d7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: matchPartialRange_Number: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":2013}}}],"partialFingerprints":{"codehealthFindingId/v1":"4675abb0949b3ea0fa5404bd6977211c6b7ee5e36934f15267fea89c9383be4f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: defaultFormatStyle: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLFormatStyleTests.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f87755517ae221cbf25cde742231bae89b4b7f8cccd6a3b2f360488186176b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: hostFormatting: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLFormatStyleTests.swift"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e0a20bf891419906c1920c5049be0bd26f2b8e82669acf502411e4db06d325"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: componentCondition: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLFormatStyleTests.swift"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"c47d65276073da2746232b6eb0e67b7c6aa31019a15493b801b2e5f727c4ee86"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: formatStyleFromLinkPresentation: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLFormatStyleTests.swift"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e7303d13ce601fc892b1a763b5f1f811d7dc9158b26a249957b40927e0d7e6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: lookalikeCharacters: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLFormatStyleTests.swift"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c101411e5cc445d187e6722d41bebd7acb2303c909c82cdcf2f8a21fedf7a29"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: componentRequirements: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLParseStrategyTests.swift"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab804897de8dd5da21115538743e15dc989db80c9a6c1dbe2d5983ab5f509979"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: defaultValueSubstitution: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLParseStrategyTests.swift"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb90ec1e080cc846e1c260b77156f79f1da61d3b7d30afe7b1453b592385cdf9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: webAddressPatternMatching: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLParseStrategyTests.swift"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d7e91a20009aa31ce279da8a709c2a83c71f8b78c65790ecac1e5ce7c6c817"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: nonConventionalURLPatternMatching: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/URLParseStrategyTests.swift"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bca0bdb1f572bfa4590b38ff085cf4ce5caffeeec1cb8b28382404cbc5360f3"}},{"ruleId":"D10","level":"note","message":{"text":"Test project verifies nothing: FoundationMacrosTests: No conventional assertion call was detected in 50 of 50 tests in \u0060FoundationMacrosTests\u0060 \u2014 the project as a whole, not one method. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a suite that genuinely checks nothing. If it is the latter, this project passes unconditionally and cannot fail."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationMacrosTests/BundleMacroTests.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf5f7400d00ff7085540d3353a8d2c3cc5763aa9d30d161021d96dff9220ab2"}},{"ruleId":"D12","level":"warning","message":{"text":"No Package.resolved committed (Benchmarks/Package.swift): Benchmarks/Package.swift declares 3 dependencies and no \u0060.library\u0060 product, so it is an APPLICATION \u2014 but no \u0060Package.resolved\u0060 is committed beside it. Nothing records the versions a working build resolved to, so \u0060swift build\u0060 re-resolves against whatever each dependency\u0027s git host serves today and two builds of this commit are not guaranteed to be the same build. Build once and commit the resulting \u0060Package.resolved\u0060. (A published LIBRARY correctly omits its resolution \u2014 SwiftPM ignores a library\u0027s \u0060Package.resolved\u0060 when the package is consumed \u2014 which is why this is asked only of a package that ships no \u0060.library\u0060 product.)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"17c769728f7f146eccfbc00c7a0d3cad4ef135f633696acfdfcef4ab06f29bf3"}},{"ruleId":"D12","level":"warning","message":{"text":"Floating branch dependency: swift-foundation: Dependency \u0060swift-foundation\u0060 is declared in Benchmarks/Package.swift against branch \u0060main\u0060 \u2014 the declaration pins no immutable point, so \u0060swift package update\u0060 moves this dependency to whatever that branch holds at the time, which is code nobody reviewed. Pin it to a version requirement (\u0060from:\u0060, \u0060.upToNextMajor(from:)\u0060, \u0060exact:\u0060) or to a \u0060revision:\u0060 commit SHA."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2b0d441976810130c3edce7971ea2e634c4635670181341f90c7279d2c06ec69"}},{"ruleId":"D12","level":"warning","message":{"text":"Floating branch dependency: swift-corelibs-foundation: Dependency \u0060swift-corelibs-foundation\u0060 is declared in Benchmarks/Package.swift against branch \u0060main\u0060 \u2014 the declaration pins no immutable point, so \u0060swift package update\u0060 moves this dependency to whatever that branch holds at the time, which is code nobody reviewed. Pin it to a version requirement (\u0060from:\u0060, \u0060.upToNextMajor(from:)\u0060, \u0060exact:\u0060) or to a \u0060revision:\u0060 commit SHA."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a819c0cf46e9fa68cb8c879da0662a7459a7a0c9d4a33a52d998d007958815c8"}},{"ruleId":"D12","level":"warning","message":{"text":"Floating branch dependency: swift-foundation-icu: Dependency \u0060swift-foundation-icu\u0060 is declared in Package.swift against branch \u0060main\u0060 \u2014 the declaration pins no immutable point, so \u0060swift package update\u0060 moves this dependency to whatever that branch holds at the time, which is code nobody reviewed. Pin it to a version requirement (\u0060from:\u0060, \u0060.upToNextMajor(from:)\u0060, \u0060exact:\u0060) or to a \u0060revision:\u0060 commit SHA."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"43bcde7e7011b15085c1cbb4fad9d25d7f34f31c9813a47b06d3bbba35c8eaa5"}},{"ruleId":"D12","level":"warning","message":{"text":"Floating branch dependency: swift-syntax: Dependency \u0060swift-syntax\u0060 is declared in Package.swift against branch \u0060main\u0060 \u2014 the declaration pins no immutable point, so \u0060swift package update\u0060 moves this dependency to whatever that branch holds at the time, which is code nobody reviewed. Pin it to a version requirement (\u0060from:\u0060, \u0060.upToNextMajor(from:)\u0060, \u0060exact:\u0060) or to a \u0060revision:\u0060 commit SHA."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ca17789eaa80ea178752ee54ac760540efae3f9e3d4561996e6f68742edf7205"}},{"ruleId":"D13","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":"915cdefdf9ee21739a7e97e5e38075ab340cf81214719065602801b72023b6c6"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D13","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":"27a62f72f4539987e7d32ddc0e8213ab771876f734d82dea2fa790db38ce959d"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D13","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":"53285f832cac88eca92fc25bd31f59aaa97c8a59522efed1756c67d3b446c8aa"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D13","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":"b1e9d55adefef63d8f9b963456e26327f9cf7d234550ca59a9403d09e904f6c5"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Data/Data\u002BWriting.swift: Sources/FoundationEssentials/Data/Data\u002BWriting.swift changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 48 in Data\u002BWriting.swift.writeToFileAux at line 459. 4 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-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Data/Data\u002BWriting.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"db9bee6c327aa9535102bcd0bdb5c82ab197f25e80f633d62811ddf7a1de1aa9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift: Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 79 in ISO8601FormatStyle.components at line 353. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Formatting/Date\u002BISO8601FormatStyle.swift"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4495ee32cf50982ce7c413039c6ed028b8f5b959d2777e89da5e57394d9cdb6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Span\u002BUtils.swift: Sources/FoundationEssentials/Span\u002BUtils.swift changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in Span.containsInvalidPathExtensionScalar at line 98. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Span\u002BUtils.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Span\u002BUtils.swift"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1f864739fb6f2ccb3a1d350823da5073c76966615a085ed4e8202a085feef9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift: Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 41 in _CalendarHebrew.dateInterval at line 371. 1 of those changes was a fix/bug commit, and the other 3 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-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Hebrew.swift"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"10fe123421d9770cb4eabcdac38f605e35fb747d6548d9f667028d9ca1c37288"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Decimal/Decimal.swift: Sources/FoundationEssentials/Decimal/Decimal.swift changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in Decimal._addReportingInexact at line 267. 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-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Decimal/Decimal.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal.swift"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe6837736266b4c8035e83c5334809c3923c8e55207bf55be6ef1bb0b4b845b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift: Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 39 in UInt128._quotientAndRemainder at line 74. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal\u002BMath.swift"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"e234d6be8f62b7af92fed841869369ffe3028f17d389d82d3e65061af4862bfe"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Calendar/Calendar.swift: Sources/FoundationEssentials/Calendar/Calendar.swift changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in Calendar._adjustedDateForMismatches at line 1172. 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-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Calendar/Calendar.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c51fb059fc8c63ec72dfe9b58fd7c8f859c8c5cf59af0335b483c567cdaf4b8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift: Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in BuiltInUnicodeScalarSet.appendBitmap at line 352. 1 of those changes was a fix/bug commit, and the other 3 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-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/BuiltInUnicodeScalarSet.swift"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f32bb28c3956ebf7ea1e667502950f80ab818156fcb79bb33a146e5ef028ef"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Data/Data\u002BBase64.swift: Sources/FoundationEssentials/Data/Data\u002BBase64.swift changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in Base64._decode at line 671. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Data/Data\u002BBase64.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4874dfc387a842251b59a97f2f4c256ae6e0b579ad1e5b75293edd1c3b1ab44"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: Sources/FoundationEssentials/Data/Data\u002BReading.swift: Sources/FoundationEssentials/Data/Data\u002BReading.swift changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 40 in Data\u002BReading.swift.readBytesFromFile at line 228. 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-07-02..2026-09-30, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-02 09:12:00 -07:00\u0027 --until=\u00272026-09-30 09:12:00 -07:00\u0027 --full-history --no-merges -- Sources/FoundationEssentials/Data/Data\u002BReading.swift\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BReading.swift"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb80ecb0a84cbc1d7625121af2270ea66ca1ca8ecfcab43ecc98125e2f104ba"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 12 significant file(s) lose their only recent owner: Sources/FoundationMacros/PredicateMacro.swift, Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns.swift, Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift, Sources/FoundationEssentials/AttributedString/Conversion.swift, Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift, Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift, Sources/FoundationEssentials/AttributedString/AttributeScope.swift, Sources/FoundationEssentials/String/StringEncodingMappingData.swift (\u002B4 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a49d8da062aed135a7178835d9fbac958ba6ad78b7ddd8dfed37e8e6dd633fb1"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 9 significant file(s) lose their only recent owner: Sources/FoundationEssentials/URL/URLComponents.swift, Sources/FoundationEssentials/URL/URL_Parsing.swift, Sources/FoundationEssentials/URL/URL_Resolution.swift, Sources/FoundationEssentials/URL/URL_Bridge.swift, Sources/FoundationEssentials/URL/URL_C\u002BEncoding.swift, Sources/FoundationEssentials/URL/URL_Validation.swift, Sources/FoundationEssentials/URL/URL_C\u002BSpans.swift, Sources/FoundationEssentials/URL/URL_C\u002BResolution.swift (\u002B1 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c031cf9dc2090da2ceb99a63e1ae5799c8fa69b28b279fa9de9580e84424662"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 6 significant file(s) lose their only recent owner: Sources/FoundationInternationalization/TimeZone/TimeZone_ICUResource.swift, Sources/FoundationInternationalization/ICU/ICU\u002BEnums.swift, Sources/FoundationEssentials/TimeZone/TimeZone_GMT.swift, Benchmarks/Benchmarks/Internationalization/BenchmarkTimeZone.swift, Sources/FoundationInternationalization/TimeZone/TimeZone_GMTICU.swift, Benchmarks/Benchmarks/Internationalization/BenchmarkLocale.swift. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"68b7c22680633301460f91ae0407aadcfe935c041fad3f1f7fce6a2830a00104"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 3 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 (31 single-owned of 310 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; 310 of the 348 production source files in this repository met that bar). They are anonymized user #4 (2 file(s)), anonymized user #5 (1 file(s)), anonymized user #6 (1 file(s)) \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":"TodoComment: // TODO: AttributedString Codable conformance is not yet part of FoundationEssentials \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Benchmarks/Benchmarks/AttributedString/BenchmarkAttributedString.swift"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb156cc9daa756a617fb88ca358a41b8bbe978eeeff3648a7f7748be7c47f25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: AttributedString Codable conformance is not yet part of FoundationEssentials \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Benchmarks/Benchmarks/AttributedString/BenchmarkAttributedString.swift"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"c499cf9e4914a0f83cf5cb55be9524db6f37c5b6794096e4a5232c101e162304"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is meant to be public (see https://github.com/swiftlang/swift-foundation/blob/main/Proposals/0041-uuid-versions.md), but is not yet public due to a compiler lifetimes bug when using it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/UUID.swift"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc90a8da1326caae3f307fbe0102b524f4cce97d7d15b45fbdc298c51e04b1e7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: avoid the coerce cast workaround once https://github.com/android/ndk/issues/2098 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Platform.swift"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3257f2d473f87e80a60e87df6bb302a141c3155c12fc59dd13b2ead98d36387"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: avoid the coerce cast workaround once https://github.com/android/ndk/issues/2098 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Platform.swift"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"85bf1be915aa184f59713ea5bbcfb0b29f4e13857e08916afc34c33c030c1eda"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: avoid the coerce cast workaround once https://github.com/android/ndk/issues/2098 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Platform.swift"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"be9c60c3e0ba9b41b230fcb4eb33cc4b45ad1d083020f67a0b5c85d251701135"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: avoid the coerce cast workaround once https://github.com/android/ndk/issues/2098 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Platform.swift"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a683bd1574dd3addbfb3cb1b191a9fc8892d459f477bb928430e63ec67f720"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: bionic implements this as \u0060return 0;\u0060 and does not expose 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":"Sources/FoundationEssentials/Platform.swift"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"234015df9b6cd74e64b5b68802e08d2e4f210c18e0fda55b4767f2595575a7d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support AttributedString markdown in FoundationPreview: https://github.com/apple/swift-foundation/issues/44"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/FoundationAttributes.swift"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"193137bc5fda091de62835c88a2b9e66642e2a58009e7927b20bf32fde9a9f85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Do we need to call up to [NSTextView _URLForString:] on macOS 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":"Sources/FoundationEssentials/AttributedString/FoundationAttributes.swift"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80152e6682b644813f7a511b39fea861355b67586c05aae805c16ca430901f0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Collect boundary constraints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/DiscontiguousAttributedSubstring.swift"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d9828631909653f26ce4a99484ddf6d3fecb9e6f3c928d7e7741ee913a18fb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Collect boundary constraints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedSubstring.swift"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b875d986715db777f9b69cc1048e65456400e4e0a3aec819a5b1a3a88dbb22"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Collect boundary constraints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca7792ef66371fcac62e598c12e7436f7cd5a1054643f1b23b6d97e2e0583854"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Collect boundary constraints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e7048c0c6c095b4079d8a5f526f05098879b7cdb4bc06a34252df3085c77fa7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Consider making an NSString subclass backed by a BigString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a17d6969c1bffca8e7448c188b3b0d1c51e2d663b11b6666c574cc3456c861"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Converting indices between different collection types does not 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":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"14e6c37fcd7ab66dc7ab39ed967feca86502a77e8248ee81d30f123e4beedbd4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Converting indices between different collection types does not 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":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"19fc3cb02083de087f38450c369fa64eb1cd0405db166e76818eac94f3dc5886"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Converting indices between different collection types does not 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":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"0078ca6a4d13901a49039f8312197e746f469443b42c43581107dcf1a430a797"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Converting indices between different collection types does not 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":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"99b8e43f47787bad5d5b8d94c6de5944c230036a00d2b93acdd583eb25537b9f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: (Indices are meaningless without the collection value to which they belong, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"07fe382ad67e567cf94f9868445effbea029a6e37fccf26a930fb79a8ac536ab"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: (Indices are meaningless without the collection value to which they belong, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ed5eacbaf5f191ebd7105f89b20f32e6fb2c1cfb11e4e31bfcb91328771a08"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: (Indices are meaningless without the collection value to which they belong, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"6006738dc5d9c64879c5edf4bd6c6c52efbb7c3c22d895c831ca22bd21b4c740"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: (Indices are meaningless without the collection value to which they belong, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"907414bb419e3910f33b0b8f7b06835ecd35503c15f6bedb52a73708cdb2191a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: and this entry point is not given that.) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"98be36f5076712774758616c7629e58e502e078c2dea6afc94e56e5ddde0a659"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: and this entry point is not given that.) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"dded516f1d5055c12a476097c61b83d1a25f39f1f40bdf8510e2e4bf81cf8059"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: and this entry point is not given that.) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"146ba55825073300ab1577bf317d81a962edc65ddd998ba4c38d75db1bacd966"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: and this entry point is not given that.) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"77fc4b15a2ad5ebb86617ebd502d82307552064e864a83a71e55e2888e8f26d4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This API ought to be deprecated, with clients migrating to e.g. using UTF-8 offsets."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"16deb166621669d601b038c96c2c815a7829369167bb10c27016eaa332ecee63"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This API ought to be deprecated, with clients migrating to e.g. using UTF-8 offsets."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac8f44df46f1bc03db0b2b5f91ab4ef34a02052240169713bf477af3aeec7efb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This can return indices addressing trailing surrogates, which isn\u0027t a thing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"71a73563dbd0acfe0107ddd8e949dde2df2db7b2588e71e09713f57565771575"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: AttributedString is normally prepared to handle. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"33da20424fbd9ef9d86525bfff68cfe72bd7a70a4843f68a1caefb00d978bfe8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Consider rounding everything down to the nearest scalar boundary. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d76783b45cb132887944b26f8fa26e1580c375e061a98416df1f4f4543b8b7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This API ought to be deprecated, with clients migrating to using UTF-8 offsets."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef754aa9d6c44554d67d3f40285a742a6c91014097e71069d33215333a582e89"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This API ought to be deprecated, with clients migrating to using UTF-8 offsets."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"118fdf9886a9dbc2082cd298e6f59569fc7a72503d27cebf05781b59a57f7fdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support AttributedString markdown in FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Conversion.swift"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6a76ac4b20e7fdeef01a98af4f4b409929e547e25a74b61026fe571a8b757cf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The stdlib should expose these as callable entry points. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/Collection Stdlib Defaults.swift"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"c343042aabed213f84821dd9a6822655e02f1764c26960273d3af09bfda0d81c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why have a custom definition for this if AttributedString falls back \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedSubstring.swift"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bca4db530329de5004b0c91646fe41d84ec0f05d0cf8d5fdc759b9d29c90ea0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement this on BigString to avoid O(n) iteration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringProtocol.swift"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f2fe430d586d75c9a454832cd40546c2520bc49dd025ef4a4e3c3ffb5d5b33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement localized AttributedStringProtocol.range(of:) for FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringProtocol.swift"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6e140a9cb14d712f1012a74833295754dad13f1d8c8802732c4ffbed55ee5b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement localized AttributedStringProtocol.range(of:) for FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringProtocol.swift"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38d9f1dd092c57350a993d2250165494d455ced0c11a5a8a4ec1df9639e1a3e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: There is no longer a \u0060String\u0060 property. This is going to be terribly slow. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringProtocol.swift"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"b740708e1ef23a7793eb0d79b23741ad4a5f7d9746a01398da7acb1d890bd32d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This ought to be public API in the stdlib. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringCodable.swift"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"729095cc0cee62a12fc2358989dfd07b1970be45288563a4673f11b25d55ceb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support AttributedString codable conformance in FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringCodable.swift"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"6996a46d9f4de8dcb14fb1622c88d39fb77110c2f6618968bd1a1f4e7c050f87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support AttributedString codable conformance in FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/AttributedString/AttributedStringTests.swift"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c8fa055cdd2ef8417f74df39e6b7e1c1b3da8b716346a5df91d4ae78620e5c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: If these are always tied to keys, then why are we caching 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":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c29d00f1eb68232079d84bfc9b5602d58aacdd82f6ed7deec700b373dcf049"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: on each individual value? Move them to a separate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"34e5843215fc91583115445657e5da1b9cf5565e54510a0dbe89e98257b81f07"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: dictionary inside each attributed string -- or even 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":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"001222b17b355dad72e5811070334fca1cd9b6b0d80e24f23e9b7462175b5438"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: global one. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"1615b0702aaa2ed3e82427f4b445ae0797713f0d467306105ee85ca28cde7626"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: We do not need to cache this. Remove it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"632ff3df43889f03dabbcbf70916fdecd548f787c28c383adc25ba5ad700d847"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why not set \u0060invalidatableKeys\u0060 here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf7abdda093e9ba71e6e1e25f333a01711132b9e515dccafc870f959ba95c27d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2620\uFE0F This subscript assignment is recursively calling this same method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d13f5bdfe35b614b893fa2890f03a3be7f17ba99e6a4333104675be7d02bf6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Collect invalidated keys into a temporary set instead, and progressively \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0c677a934479e33d8066e893e5e260b7877cc9a52ffe1c72deecb7f5101a2e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: extend that set until all its keys are gone. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeStorage.swift"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"d43c8b6dfbfae6c503c55b869e536034935e9a52bb2a07f1cf56b17058a87b31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Performance review \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttributeConstrainingBehavior.swift"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"12da33db3c5725d9da8f9c2e39261414aefaaa2ab4388feedefc07c608d02b60"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is semantically wrong. We do not ever want to constrain attributes on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttribute.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"30509a10fac1412eecf57b6c4c0603bf4adb3cbb38c1c08dc7b4e7e9fe376ee1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support scope-specific equality/attributes in FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedStringAttribute.swift"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee78b36f10796bb7e59d7b8ca527b4b4157415a5e96723da681e1e6a73d059c1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Extracting a slice should invalidate .textChanged attribute runs on the edges \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf22d32c980411b53733341e4ff4568c80f92d15c002b0de2db474eacd2549f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support scope-specific initialization in FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e3208b4dfc8e9a4502b32359de957de8b7d3ac2c3dcff7b90c53591b5519ae"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This \u0060copy(in:)\u0060 call does too much work, potentially unexpectedly removing attributes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"1985027fe21a5d4e1e2eb460bac6a4139aef4cf90804a785b518f1014fb7eb9b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why is this allowed if _modify traps on replacement? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString.swift"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d1254b4c65dd7b59c3f207168a3d5295a9ea937a8827af06cc9c4d31746f6cc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why is this allowed if _modify traps on replacement? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa75354d58380ecd5d068752f1348369d46eb4b6e244982eac84815490f2e1b7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why is this allowed if _modify traps on replacement? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"3569b39c7608024f44b49e2395eba15beceef7e3e521565b4e5c625884b6c4fc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do we need a direct implementation? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002B_InternalRuns.swift"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"030605d43203f6f0d591686b1fd2ba97175d338792702dd2d28857d0cc33c684"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Don\u0027t return a standalone rope. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002B_InternalRuns.swift"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a3efae3e9ab7e55ad08524c6d4cd1747a3959141e470ac657d8b288e5491c81"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: AttributedString.UnicodeScalarView needs to publicly conform to Hashable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca1cebf0eb1697b65a84e177af4a4d7295adb00c89217fa081ec52950e215956"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why isn\u0027t this mutable if CharacterView\u0027s equivalent subscript has a setter? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfdeb5f0b1c39279b8c872b95e785d1175ac84f4103503d4aba3018073ecc1e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why isn\u0027t this mutable if CharacterView\u0027s equivalent subscript has a setter? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0be8b4ddaee0132b89b37f4f1ff8fd731b06f98f3513896f0eb95b384915fef"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should return \u0060Self\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3c993c974cffa863052c72edec049f44ff0736f0f5348bcf89b058f78d9f38"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add individual overrides for other RangeReplaceableCollection mutations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BUnicodeScalarView.swift"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"a796375925bb9d9dc8d451716cb3f9221b0874354acf4995dc000dd256940248"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add individual overrides for other RangeReplaceableCollection mutations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57151e8fa58787d19fa89dd3406ba43ad1bea3e8177cbcec5be4a4bcd509991"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make public, with a better name. (Probably no need to state \u0022run\u0022 -- \u0060index(containing:)\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":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns.swift"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a60b97166e84d2e19a6a757845d2fed23d0e240c29b202494a432fe994da5f5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this and update description to only print attribute values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BRun.swift"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b0eff02576c0595ad0b8cec54f04aec84cea3fc87ec9303a029117ff764c97c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why no labels? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd2787b2a38bf4bc76f21c8d6183a5f2c31dc454987d1f062defe00e9784ac7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why no labels? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"f79fd410041a73dd025baee0bd571c1f139930b36a520ebf7b427ea453bab694"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why no labels? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bda5a2a6d9d5de8252eebf8bb4222d334abcf197000a186b0851ae184ea606f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why no labels? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"46c76e9c5a7d0f9503ae91d5b8dc60f0649cb01d066056a264621cdabc7012f1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why no labels? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"7301250c80a8dddc2ad840ad9e2f9d9f1b2582b1c295ad7813f22745482e0898"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why no labels? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04e9a7be98c938d016dbac6686ed9881c5ffdda9168451c05df504ca551cda1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2620\uFE0F Get these from a proper cache in runs._guts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf5ad158b20033d7384318ebf80ab3ad9ffc5393dc0c4f0ffaa9cc3dd4a4c57"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2620\uFE0F Get these from a proper cache in runs._guts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"0370ebc02522d38a32e986c35f55ae8e219b6b18828546c3bce2ee7600381c03"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2620\uFE0F Get these from a proper cache in runs._guts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e6a3ec2e2aee83997d79d40594542ae9a5e8598f453f40666458efe1b8e4556"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2620\uFE0F Get these from a proper cache in runs._guts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f265d5c36bb346a546c821491b3297e18e240ab2ca2740e4c454da925abfd75"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2620\uFE0F Get these from a proper cache in runs._guts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"07f9e45aca5163e63268b0105df407556c0e0987ee448d6e4f8051828827df9d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a collection with potentially unaligned indices that uses Slice as its \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"684c0ad5e316a66e593152bd09a154bad3ea369891c295f2169f8985652370b5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a collection with potentially unaligned indices that uses Slice as its \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b676df0fa47121350e8f1b0bbfb165b3ea198fd3639ecef5ded3e307e8035b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a collection with potentially unaligned indices that uses Slice as its \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"abd6c05cdb891f7047fda252c294626f03ce97303a143a4cbc3add3a5d8bbff6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a collection with potentially unaligned indices that uses Slice as its \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"17803d73a4d89b082b000d51f72c068af563156b6ac6b0f0a82f864b0756775d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a collection with potentially unaligned indices that uses Slice as its \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"700fd5474c4084b6dc5b53a71d2a92e8c28f81e1acab3229b819724020ed3c0a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a collection with potentially unaligned indices that uses Slice as its \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BRuns\u002BAttributeSlices.swift"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"56cf5afa6059690931d80e8fcd98eeac35347113765f85d095dbf19489a5c1d0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Extracting a slice should not invalidate anything but .textChanged attribute runs on the edges \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"afed5e12b5d864ba55c44e448fae1ea7e6e4164b61974a37a4b1ef321268f3fa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This doesn\u0027t handle sub-character runs 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":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"60b69959deadb337b941683c639c33826ccc008a8830f7b63394a33c095d01e6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This doesn\u0027t handle sub-character runs 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":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BGuts.swift"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f960a4975a506d1cb84ba67bb4ddad1f461d8c78ae01b8a4bc18bd9250faaf9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: AttributedString.CharacterView needs to publicly conform to Equatable \u0026 Hashable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff727c2aefee53d582e1b1ef42017f39af365d01c6b34fcc7f0f915ad7066b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why is this settable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"665a1794a5579113a17bdede34f143af3c15af50c0aace883d7fb6c11f7b1c55"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why is this settable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributedString\u002BCharacterView.swift"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"f974f18861dd3d3f45da0e13a410f0c99f06915773cd700a7ee104c0c4826453"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support AttributeScope key finding in FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/AttributedString/AttributeScope.swift"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a68ec7d02ade8c4fa4b13b94a43a3607af328acbbf471a6cd848e23c5ef401"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Use DateFormatStyle once implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Date\u002BLocale.swift"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa66aaf3417a9f0381912dfaf3493527c368aab8740a9c477604dea398ba0333"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is almost the same with Calendar_ICU\u0027s _locked_start(of:). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"38a72afa952dcba748ec784fd0fd89e1411a6aebe63ea9dbdae440781ecaf735"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is almost identical to Calendar_ICU\u0027s _locked_timeZoneTransitionInterval. We should refactor to share 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2307}}}],"partialFingerprints":{"codehealthFindingId/v1":"88081d906a52e71fcb9c471f52ae95b1148d9399bb8451542b4ffaf06cf40e38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This isn\u0027t supported in Calendar_ICU either. We should do it here 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2422}}}],"partialFingerprints":{"codehealthFindingId/v1":"d42db5616ba702e5408b84a5b98076e2ebc112ef1179b360b7ec2628a6fcf9fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This isn\u0027t supported in Calendar_ICU either. We should do it here 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":"Sources/FoundationEssentials/Calendar/Calendar_Gregorian.swift"},"region":{"startLine":2713}}}],"partialFingerprints":{"codehealthFindingId/v1":"71c50e24ddf300caba9fc7101a15516c27764019be91c229b780860f7715adcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check if returning the same searchingDate has any purpose \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfbf2cbcfe35abd84aba4bfde9dbce77ca9d4d8e760f0039c4d0a0004708d9b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: can year ever be nil 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":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"03cafa7a512c2644f89a2f4553e0951d1610b3a3570687d0051e40cf97df170d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We had a bug fix here in another place in CFCalendar where we need to look at more identifiers than just gregorian \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9a2a6d06b8741cd858ccb3cfaded2b57a685952d3810c00b7ee2e07df01139"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check below comment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1158}}}],"partialFingerprints":{"codehealthFindingId/v1":"520524a34e627cc92850e70b70b3f9281b0e940d8ebc7192cabb599033b2c402"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Assert? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1277}}}],"partialFingerprints":{"codehealthFindingId/v1":"385a8e88e26dfa4e8a9235b2d12de608800cc7d247bc058e41e83e9ac84a7cde"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider if this is an error or not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1492}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c1fd2a2a63d70d7ff0fd6d6da86c7f0c42d8284d16c9c9370d4da6eff97c974"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider if this is an error or not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1522}}}],"partialFingerprints":{"codehealthFindingId/v1":"628f52658fd43b114c9e45a46cda708337d6469fb260d1377c8ce614559f76c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should be set to something in all paths before being used below. It would be nice to refactor this to avoid the force 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":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":1804}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6833e30498eb0c5859019d258078a35d134f8fe29ef16f61e00b6c63bb68323"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Decide if this is an error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Enumerate.swift"},"region":{"startLine":2410}}}],"partialFingerprints":{"codehealthFindingId/v1":"53e4412c6da1a3b331d4a6672ca67513b52ee97b6d4e78b12aa7f25243df1904"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support quarter; currently unsupported, every backend returns 0. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar_Chinese.swift"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"be26c0d6314a46ae61b379d51516718a782555a5a3fe67dbbda9c8273ae1267b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We can\u0027t use isKnownUniquelyReferenced on an existential. For now we must always copy. n.b. we must also always copy if _calendar.isAutoupdating is true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"288158e6b3603f529bfeec0223f4c6b7084c875e2c6b76a548ca3bed2e5818a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We can\u0027t use isKnownUniquelyReferenced on an existential. For now we must always copy. n.b. we must also always copy if _calendar.isAutoupdating is true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b1b2ad50000ca32f821a014e65c73adf7f2974a08e8b99dbab199b7b7b0e3c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We can\u0027t use isKnownUniquelyReferenced on an existential. For now we must always copy. n.b. we must also always copy if _calendar.isAutoupdating is true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"f91e3de0451cf43b792e8649fe3f43084ef340cdea1501d6be0ffd8a6d09fcfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We can\u0027t use isKnownUniquelyReferenced on an existential. For now we must always copy. n.b. we must also always copy if _calendar.isAutoupdating is true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Calendar/Calendar.swift"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e902df218afb4e611ea9d088c18cbfa683ba4fcf24acc22ec31da7cbc9f6eb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove in favor of opaque type on \u0060regions\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":"Sources/FoundationEssentials/Data/DataProtocol.swift"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1bdd93b7e281c69cd1e6fffb819e259d0fa18fe5e77f63f3a16a08ed14ffa67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Somehow avoid copying back and forth to a String to hold the path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Data\u002BWriting.swift"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3dd1a677b6e57fd6d2965e66b27d8476fdba4461416b38e64e255807cfa7023"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Inspect characters here 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":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"54aedd60d9ee409ab078c9bbaaaaf9b584baca73a98d787e4a06540158cabb08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Inspect characters here 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":"Sources/FoundationEssentials/Data/Data\u002BBase64.swift"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"3557ac7af26f483d06cc75f43b93e2c8d84fa7474a78db6f489def2b99029fba"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: When possible, expand conformance to \u0060where Element : Trivial\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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"b21968846399954f182f7fd9edd2780ae64dfc47b46f254c8f14b864c9335916"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: When possible, expand conformance to \u0060where Element : Trivial\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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"c434ddaf0c74b75aca482dbb628c880c2b26ca596b4751a4626491934a01cfcd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: When possible, expand conformance to \u0060where Element : Trivial\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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3c4603ddcf208a70cb469da310bd297201bbbc9fab22c8cc760c8a9665fba2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: When possible, expand conformance to \u0060where Element : Trivial\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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"de6c8e7666629d96277e9ea91aeb8e086622cac4a135441a6a2443b0128f76cc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: When possible, expand conformance to \u0060where Element : Trivial\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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aa5f37bbe3d5aee799f2416b8f35e31926ea8dd640dcd65f8ea80d642260555"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: When possible, expand conformance to \u0060where Element : Trivial\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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fed9dab69226cf324a07daaea84b35508bee30a59f6c9d191821d7e5f3e693a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: When possible, expand conformance to \u0060where Element : Trivial\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":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc0c4efe989addfca9c5c4cf241c58d01b700da02017102c1d1ae0852e446f2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Generalize to R: ~Copyable when withUnsafeBufferPointer does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d1a8c756dde68e6c5df1f777a42371c323039e374161677db8b250db08ae23"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Generalize to R: ~Copyable when withUnsafeBufferPointer does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b5ccac823052f5fb174c7a0b77fabe3f26ee9e7e4c76257932d460d681b6aa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Generalize to R: ~Copyable when withUnsafeBufferPointer does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/ContiguousBytes.swift"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b01256f830aa9f158bf6e2f98b718503f8bed3b1dd44c3706a795d4eab91000"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This currently crashes compilation in the Late Inliner. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Collections\u002BDataProtocol.swift"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5729328152ad40f035f1abc0505a44a5bfe43c628c898e1da93f2c4b5784db49"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: The definition of this inline function takes an inout reference to self, giving the optimizer a unique referencing guarantee. \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":"Sources/FoundationEssentials/Data/Representations/Data\u002BLegacyRepresentation.swift"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c362edbfb99f02aa5fb93e987487b49033e46637ad658ed06d31cfdf439d9f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this when mgottesman lands optimizations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Representations/Data\u002BLegacyRepresentation.swift"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"3adfcfaef0d21ce7d07f68932bdff2e31e863eef5ccc4f4f2a3d254c8965b3b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this when mgottesman lands optimizations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Data/Representations/Data\u002BLegacyRepresentation.swift"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"7da624687ec32e915c23656c5d8ead3672feb46ec0d61df5d8266d9d69a56496"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(compnerd) - is there a way to avoid the round-trip of decoding, encoding 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":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c2883469f60f3eba39fbfddb5817c92f9f385a0eb56c6586bf4722515538b55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support case-only rename in swift-foundation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileOperations.swift"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"3626525c56b9b51354c0cafbaec3942961632501e9029b1182d31a53e42ac811"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement fetching cat info attributes in swift-foundation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BUtilities.swift"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"6453057b79631511540c575f0d1a274e91a1c650c38a07439a1182f311221199"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support relevant cat info keys in swift-foundation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BUtilities.swift"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"f782f66386f005a77f55fab256a839c64bb055c5ecb539a96f5e3828c972b6f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support .deviceIdentifier \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c8ebae457d4fc43f03abe832b37110e11e868f62061fd603865d6df2f78dd58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(compnerd) support these attributes, remapping the Windows semantics... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BFiles.swift"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc6482b42c1e7a462507b3fe48648741f3c440c5a283e79fe46cc1640bfa4254"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support correct trash locations in FoundationEssentials \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/FileManager/FileManager\u002BDirectories.swift"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b27dd442a2987dd27e4cd244fee5c4ef20921448e328ac3510953df36fdbe666"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: identify how to get a path, even if a namespaced PIDL, for 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":"Sources/FoundationEssentials/FileManager/SearchPaths/FileManager\u002BWindowsSearchPaths.swift"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"efccc7022c13049a2ac96a38d7c048ad4f85e86a714802a0237e708d5e26bc71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Proper handling of Infinity and NaN Decimal values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSONDecoder.swift"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a588fc4e6cbafb16c782e428239bc4bbad5b28186804ade97bf8121884f4243"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: any reason not to add a fast-path as in JSONScanner\u0027s version? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/JSON5Scanner.swift"},"region":{"startLine":1093}}}],"partialFingerprints":{"codehealthFindingId/v1":"b407bca1707caeb1ce33aa5361e27c64f9034bc6b04fdfcfa3b467e5c3fae035"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This can be improved once stdlib API for safe conversions for fully-inhabited types is ready \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"434b841d2c0b8ee3e95ea4368b497ff01957ee259e8e461771c3d22b9a29f321"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: mark closure parameter as non-escaping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0c4c9431eaa95050696418a9d726d328f434c88fb71ea5b20c84a9a727b8f74"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: mark closure parameter as non-escaping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d19a8dbfe072120d8f1c62ca2cb396e40d93c0f793bc223dea23bdd9731365d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: mark closure parameter as non-escaping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a75378c6bfc2318ab72a0eb1285f16c08eff7659a9aa27fe500dd12ca3341ac"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: mark closure parameter as non-escaping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"2732cefb3a402ccde818501d122b2f90e6932c63a8a7d3a4e155d341381658b5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: mark closure parameter as non-escaping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b220de0e4d111caf79ba5985175256bcdbd94ac5684668fe12f0985630944e9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: This could be a shortcut with a layout constraint \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b4cf866f7c2549aaa631ac41ba24f870071064ae053ce134589838741e59dbf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: Use \u0060BitwiseCopyable\u0060 layout constraint \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9adfcd84fabfe1ceb5381833ae4010d2eb8c6e70564e5b716b490cf4d3a4ad"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: Use \u0060BitwiseCopyable\u0060 layout constraint \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/JSON/BufferView.swift"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd2e5de1b7bf8a16b6d55edd139b5b116e641466f49d9ef5fea2033c535b535"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: (Locale.canonicalIdentifier) implement in Swift: https://github.com/apple/swift-foundation/issues/45"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale.swift"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06a68df01275332d5ffdba30e97195de354866bc40556e7f8203c7f1d63dde0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: (Locale.canonicalIdentifier) implement in Swift: https://github.com/apple/swift-foundation/issues/45"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale.swift"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"c89178fa537b2bdd21933c0dd74d5211bef2e167de5e9175c6483c43b63767b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: (Locale.canonicalLanguageIdentifier) Implement in Swift: https://github.com/apple/swift-foundation/issues/45"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale.swift"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f90cbfa945d48d9b5116afb460d612822ddf947e5de38267ce0855b05f0aa6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Read language list for other platforms \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Locale/Locale\u002BLanguage.swift"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"764288e57e1c9d81bc092b6511278a3fb427895b432ec66a7d163fd482c010bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Darwin calls observers in the order they were added, mixing wildcard and non-wildcard observers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/NotificationCenter/NotificationCenter.swift"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e64f6a5e53f28b90a7ad62a27082dd4d93916437d0078d058b0977354d56075"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Ensure KeyPath only contains generic arguments and not subscript arguments (https://github.com/swiftlang/swift-foundation/issues/1482)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Predicate/KeyPath\u002BInspection.swift"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"affd6a3fc97a2bac40a1b2fc47957ecc0d46424f8688bcc764ba8dcf297b8f16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u0060uname -r\u0060 probably works here too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProcessInfo/ProcessInfo.swift"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"255643b57acd97cb85553b9bb55eb02c646ad9ca053c53e2271626236068eaaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u0060uname -r\u0060 probably works here too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProcessInfo/ProcessInfo.swift"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebef6e4f7ca41f6239c47d117479037f51298672ba8855177652e74fcbde46bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Move to Swift once Plist is ready \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/ProcessInfo/ProcessInfo\u002BObjC.swift"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3be7cef5d2f05f9d37255ea6eb741145c46b22a231b2b64031aefabffd3f66f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: CDATA sections should only contain valid XML character values. The original implementation allowed arbitrary data interpreted as UTF-8, as does this. Control characters and other arbitrary binary data (which might be interpreted successfully as UTF-8) is supposed to be rejected."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1261}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8164a9956058ea7cfbba0e63748984b17ca2a694705bf2a9d01ad657227266"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Here temporarily until it can be moved to CodableUtilities.swift on the FoundationPreview size \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/XMLPlistScanner.swift"},"region":{"startLine":1528}}}],"partialFingerprints":{"codehealthFindingId/v1":"603fd5b3fcee74049a21756bf26497913ddcb3b20533082d246a0add481f6f91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Here temporarily until it can be moved to CodableUtilities.swift on the FoundationPreview size \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistScanner.swift"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"39221eb6414a7f59d4539171bb20a81728528baa98867f2e816277e711a823f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: For now, FoundationEssentials only has support for utf-8. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDecoder.swift"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ee5d9b95c244a1bdde210a01d9c19dd0cbb73b23f917205c5590d8a035116b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This FOUNDATION_FRAMEWORK-only initializer cannot be used by FoundationPreview. Only UTF-8 encoded xml plists are supported there right now. (See readQuotedEncoding(in:).)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/PlistDecoder.swift"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"aec57e1b149c8377c4edcfe7cca0ba7aa53769c55c9868b2b91a345adf5c12de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Having the ability to quickly determine if a string contains all ASCII content (especially if stored as a property of the string) would greatly improve encoding performance. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":1142}}}],"partialFingerprints":{"codehealthFindingId/v1":"54a6e6fd3bdd190c6790f67851b77f08fd685160eb5f5a01240d81e1364411df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The string\u0027s hash code is computed up front here because otherwise it is recomputed very often while uniquing values. There might be a better way to do this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":1143}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f0054c23eb2e82b7827f1432096a2069633a3c064fa7ce66117cca2b392c52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Swift.String.hashValue or .hash(into:) for NSString-backed Strings is surprisingly slow because the entire contents of the string are hashed by individual -characterAtIndex: calls, as opposed to a single -getCharacters:range: call. NSString.hash is currently much faster on NSStrings so we\u0027d prefer to call it instead. The \u0022allASCII\u0022 state is a very poor approximation for \u0022is this an NSString-backed-String\u0022 (because currently decoding a UTF-16 BE string from a binary plist with PropertyListDecoder results in an NSString-backed String, while ASCII strings are Swift.String). The \u0022allASCII\u0022 state is important later for determining how we encode the string, per the bplist format."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/PropertyList/BPlistEncodingFormat.swift"},"region":{"startLine":1144}}}],"partialFingerprints":{"codehealthFindingId/v1":"905511f0f4fbdce939d294d68d43a3e26670724047f76f28f757f5d86106bd90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement \u0060CFUniCharCompatibilityDecompose\u0060 in Swift \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/UnicodeScalar.swift"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1bf4d1717e4a634b04ae0a6f1312b32ba008bae61ab65383c2ab399babe1f7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement \u0060CFUniCharDecomposeCharacter\u0060 in Swift \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/UnicodeScalar.swift"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ba9bcf2381628469a24eda03c117e85cf2c280947a8dc2e1ab7b1e0871159b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Expose Case Mapping Data without @_spi(_Unicode) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/UnicodeScalar.swift"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"af24ce41114e01e9e3b5db86f408ebe44d9278acd58ae93d8290d057fd9fa627"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement data(using:allowLossyConversion:) in Swift \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/StringProtocol\u002BEssentials.swift"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"84019730c23648b5aa457783072982048f5b00a96da3639dc33d73ef77283044"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement Unicode decomposition in swift-foundation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BInternals.swift"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b81d385f30664260b6b001993ebb466fe05f608baac696449498edccc704ade"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement Unicode decomposition in swift-foundation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BInternals.swift"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f387d9ff387fba4e616525232cb6029dcd053d6a061a4c7fa106383afadd4ba"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: one day this will be bridged from CoreFoundation and we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/String\u002BEncoding.swift"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"fadd913541821433078142da9a3d5ba1271ed9fff928005fd2c8a684636826e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Enhancement to handle Windows roots \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/String/Span\u002BPath.swift"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"3626b99f3f98af838f4bc6fee0f06d7c85d4c4d57273918b2434172bc1c6c3ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We may want to consider changing this for Essentials, as it returns a list of abbreviations which only Internationalization supports \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/TimeZone/TimeZone.swift"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e251fc0141fda2282043a437ed5229768ed6e498e3f4da389c3f92f58a9c31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Investigate returning a path with backslashes... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_Impl.swift"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c6c4e0f53d98913bf29e4025c7fe2af99dc0f1b013b3a52aea71d1db0651fe1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: These conversion functions could probably be written in a much more efficient manner. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ObjC.swift"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4910e134c68c706b5e55faacfd4038dca667481da465614036333130b0ed230"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: I think this may be a waste; we always override the calendar, the rest is ignored \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f62a3f1d3ea3585ceaec8e2478ff95aa7ea89afc4c04fdae6d85387df4f054"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/swiftlang/swift-foundation-icu/issues/62"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1152}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab5f92fed44caf759c9714b53d23fbce6e809267cc42c95eeefb5c4fa0670491"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/swiftlang/swift-foundation-icu/issues/62"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1241}}}],"partialFingerprints":{"codehealthFindingId/v1":"618055e03293f225c68cfe6e26360d09e323552240f5223a6d4ac118fbd5c651"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/swiftlang/swift-foundation-icu/issues/62"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1805}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e3b26dd87309d79bc477b0de536474b986640f2f1c374023ab6f4422c0d5c0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/swiftlang/swift-foundation-icu/issues/62"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1866}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8e73365e30d0d0f44de2b443925e76503909dc8480888cb31c4fae24153d1a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/swiftlang/swift-foundation-icu/issues/62"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":2249}}}],"partialFingerprints":{"codehealthFindingId/v1":"b568092b4193d1810c1f9c55ea697d2277ec8698dafe0f772febd5a4943158d9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/swiftlang/swift-foundation-icu/issues/62"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":2293}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a063069eca83e069c58e1eda0954f1c8bcb344a966e9b88ab6ab53ca9e8f357"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/swiftlang/swift-foundation-icu/issues/62"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b3115a633b058dda23e55a77e25113f065b19e49f2c7dca79dd51c05e55fac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: See if we can exclude this for calendars which do not use leap month \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1235}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b6efa370e4f79717e206d6ec48d81cc81c573ab24ce0c3219c1a29faa9bac8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support quarter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5f1eab91f33a562a3b555cedce450a8ecb13d2b30f5fdc110e542c45f5106a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is copied from \u0060.indian\u0060 and needs to be revisited for each new calendar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1462}}}],"partialFingerprints":{"codehealthFindingId/v1":"84dfa551a19d77c83539313fca1e328ec84d0cad4ac33f0f3ec7061bed0ba5ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is copied from \u0060.indian\u0060 and needs to be revisited for each new calendar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1582}}}],"partialFingerprints":{"codehealthFindingId/v1":"f40696026dc3381afcbc5cc8e79a9f8d3a33264280d78406826ffbe84eba6352"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is copied from \u0060.chinese\u0060 and needs to be revisited for each new calendar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1468}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f18ed708916dbcd88a2281775f9806d10d97ae0c3136670501136171e11dd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is copied from \u0060.chinese\u0060 and needs to be revisited for each new calendar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1588}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de69c8415adeb34b9e652f7a8fa6309b28b7666f424af85cb453f427cf82377"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: adding 3 months and tacking any 13th month in the last quarter is not right for Hebrew \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1638}}}],"partialFingerprints":{"codehealthFindingId/v1":"42e9cd9e4c79cda08d31197a10035060d22522c81412a85d27c77badcfe60b59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: if there is a lunar leap month of the same number *preceeding* month N, then we should set the calendar to the leap month, not the regular month. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1764}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cae537ad9bd421795fa142f3efd91ba7a6b4d722708f80ea5af392126c034da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Double check C math trick 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":"Sources/FoundationInternationalization/Calendar/Calendar_ICU.swift"},"region":{"startLine":1858}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ff0cd110af576137e051e254a739419dd87302de7425cb463af451c2f2a2059"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use withTemporaryAllocation once swift-tools-version is 6.4 or higher \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/ListFormatterImpl.swift"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3c3e756f0dbd888e912c6b1361ee2f50a33d01d1cd5f96163d9fec132a0accc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle ambiguous years on \u0060newCal\u0060 for Chinese and Japanese calendar \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Date/ICUDateFormatter.swift"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"0817d1b21f32191707c39567c9297116fcde8eff4db54d94d2d9b97e66131759"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove this when Decimal is moved \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/ICUNumberFormatter.swift"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"47814b063c5bd1e494e2cbcaf3ab9cf8a4a210f983c221932cee475f548458fa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove the lock once ICU fix is available \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Formatting/Number/ICULegacyNumberFormatter.swift"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"81baaaa9ad4ed2485852ee66da1a84a58ad38dd4a5352afbaef92dd16f541368"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Replace this with forthcoming(?) public property such as https://github.com/swiftlang/swift-foundation/pull/1243"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/ICU/ICU\u002BStringConverter.swift"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb65ecfd0ae3aa4f29a7f3a4e57fb5ff7f5c47281846c637cd2a6bd4caa17a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This will never be invoked as long as we have a \u0022placeholder\u0022 NSLocale in CoreFoundation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_ObjC.swift"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9fcffbf663b77c4ddc37bb6485d2c2f8fd1f671c1b481c17c801a8199940a9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: PERF: Refactor to not waste components \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"4641727e0bf6003f8878002f0ff5f1ae02cb818f3f9e0e466302cbff65d24c7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This could probably be lifted out of ICU; it is mostly string concatenation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/Locale/Locale_ICU.swift"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"f955206a2303a898c774e70e5ca4a3e8ec3b7908a0afe677f79097555c3c1aa7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: It is a bit of a TBD if this extra effort to preserve a subclass sent to Swift from ObjC is worth it for \u0060struct Locale\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":"Sources/FoundationInternationalization/Locale/Locale_Bridge.swift"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5433e827603080943e83d1fd0d4b7e9d3520e56f49fa4bb78f9bbfdd0419124"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Until compare(_:options:locale:) is ported to FoundationInternationalization, only support unlocalized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/String\u002BSortComparator.swift"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"058b541a5fdd8a0347ef392e472a00c413ace2786d851bcc90382b662761a4fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Until we support String.compare(_:options:locale:) in FoundationInternationalization, only support unlocalized comparisons \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/String\u002BSortComparator.swift"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c6c5bd9f0b6ba0aa46aa43ad382e37b649ba02403a695c1e8148582867771b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Until we support String.compare(_:options:locale:) in FoundationInternationalization, only support unlocalized comparisons \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/String\u002BSortComparator.swift"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda227f4fad4f98f8071f37e91e3ace3c117cff9c1036055b2842d2f966d210a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Until we support String.compare(_:options:locale:) in FoundationInternationalization, only support unlocalized comparisons \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/String\u002BSortComparator.swift"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"724145fe6d917e4777a9b74fe9dc7c85f3a17d5045aab094aaed383966d25273"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Until we support String.compare(_:options:locale:) in FoundationInternationalization, only support unlocalized comparisons \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationInternationalizationTests/StringSortComparatorTests.swift"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8af3860b4c90274664830937591714a5dc14bd6e87315643ac5ef8f6f7d665b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: On Darwin, the following initializers use \u0060.localizedStandard\u0060 as the default value. Without String.compare(_:options:locale:), we have to leave the default un-set for other platforms. Once we have it, we can re-unify the behavior again. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/SortDescriptor.swift"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"facbbd4e3845d107536e6b2d837b63d3f08aa5b75c43aa8954c8d6bd6e06997c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Until we support String.compare(_:options:locale:) in FoundationInternationalization, use the lexical default \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/KeyPathComparator.swift"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de12871c3de1cf4cd3df01e81d4b18066ee52db03688c13b43f68150d31f74b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Until we support String.compare(_:options:locale:) in FoundationInternationalization, use the lexical default \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/String/KeyPathComparator.swift"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"61d63d88835a16c700cea12f814287e0f3e265e38a71b15b67dabbb9368d9672"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: If we intend to implement this in Swift, we will need to remove the placeholder TimeZone in CoreFoundation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_ObjC.swift"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c3da631b69c14bc8a1febd5ecb71846d8cb060354690fe71dc7f3676e8aa56d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should throw an error properly, but for now return 0 just like how we handle this when calling into ICU timezone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_ICUResource.swift"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c2ea1697a24d78f37c4ee8e679fbeaf992a579de4c86a05a0f3a62552c54b4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add logging for when initializaiton fails \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_ICU.swift"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"e27861cb12f8fd5769bff9b586b4fda2433a0ac6895a10be1db4c04317744bab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider implementing this ourselves \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationInternationalization/TimeZone/TimeZone_GMTICU.swift"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"3322648038178a343e0041ec9592cd74ed1ea021494844e077768147c45245db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is meant to be public (see https://github.com/swiftlang/swift-foundation/blob/main/Proposals/0041-uuid-versions.md), but is not yet public due to a compiler lifetimes bug when using it (186581562)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/UUIDTests.swift"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfefe357f5bfcbf0d5c5da3ea0f4a4e0d858d811fa6df96c435bd5e6b77f518"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Update this once .fileSystemPath uses backslashes for 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":"Tests/FoundationEssentialsTests/URLTests.swift"},"region":{"startLine":2862}}}],"partialFingerprints":{"codehealthFindingId/v1":"41157bd79e0fa72a40b74f960fd73bfd5d00065c450a083c3e38b11ef8b0f04c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(strings): this API should probably change to accept a Substring? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":2038}}}],"partialFingerprints":{"codehealthFindingId/v1":"062e477a7fe483634524862becc6f0492c3c7a1ba5d6f522aad55029ee24fbd0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add a test where this function actually returns nil. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":2274}}}],"partialFingerprints":{"codehealthFindingId/v1":"6feaedf23c3877a4f20d79e89549af0f03790defc577fb3a2f8a53235b9779a4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add a test where this function actually returns nil. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":2293}}}],"partialFingerprints":{"codehealthFindingId/v1":"45e50cbb18044c506630745fb1b47e8adbdfe4307ff4dfcb5c1ac7574456e485"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Indices that don\u0027t correspond to grapheme cluster boundaries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/StringTests.swift"},"region":{"startLine":2754}}}],"partialFingerprints":{"codehealthFindingId/v1":"41cd06116932a55c04d212bb4cdbefddf0089398b0f3e1623e19c6f500da2b78"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME 123202377: This is wrong, but it\u0027s the same as Calendar_ICU\u0027s current behavior \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/GregorianCalendarTests.swift"},"region":{"startLine":1243}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb8f26a7693391ef6fc853523af29610c2b2b3cba33d9af340b1a3b3032fdf6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ContiguousBytes should refine ~Escapable and ~Copyable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/ContiguousBytesTests.swift"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc047568ae76e23bbdbb8dfd0024d07f7fc93d519a682687e8fd41fbabcd8f0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Re-evaluate whether we want 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":"Tests/FoundationEssentialsTests/AttributedString/AttributedStringTests.swift"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3ecb49ae679d86136a927ad8f55c84a7e1fdb31bf26e9fc919a2c12d2efa0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support scope-specific AttributedString initialization in FoundationPreview \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationEssentialsTests/AttributedString/AttributedStringTests.swift"},"region":{"startLine":2597}}}],"partialFingerprints":{"codehealthFindingId/v1":"e449e842614d7b981d42a522a0d454313edae656554c787ed08c5a0a2a21b752"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Need tests that starts from somewhere else \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/ISO8601FormatStyleParsingTests.swift"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e78a35893f70357fc7aa110bd8bf42651c9de67f322866cc2b811a78861d2d3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Need tests that starts from somewhere else \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationEssentialsTests/Formatting/ISO8601FormatStyleParsingTests.swift"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc332f8e07839788ba35a4cac92d792df64244271982c687a025aa58b09a8a87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In non-framework, no FoundationInternationalization cases, return nil for all of tehse \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationInternationalizationTests/TimeZoneTests.swift"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"1204dd1e200552fb92370a5f1af655ccd23b1ca94ec460e0465f61b168be5d9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: When String.compare(_:options:locale:) is available in FoundationInternationalization, enable these tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/SortDescriptorTests.swift"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e6d67fa9ad8685801e80032281c2d113db6bef1fd4e6fc0921290a58f401ca9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Reenable once (Locale.canonicalIdentifier) is implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"538ef32f56245ab97dd0ae231f0c2e7e07f385040a3524209025d28f1c8d5358"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Reenable once (Locale.canonicalIdentifier) is implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f27a7776e5772a54e8833e5a9b62e9b0cdd3ed735bd1e9e53336510f1785fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Reenable once (Locale.canonicalIdentifier) is implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/LocaleTests.swift"},"region":{"startLine":911}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3abc3f546f4a478dacb49f5d44a206985d571bcc9282bc8a426745c4c249db1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Reenable these tests once DateFormatStyle has been ported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationInternationalizationTests/DateTests\u002BLocale.swift"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eadb3b3804ad60c5215674051c3d48bd8b97091d16b0104d2c7144ada8de9d3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is failing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationInternationalizationTests/CalendarTests.swift"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"f376fffe8fe7b6543b0d4da60c780afa80b5d22421a06e5fe87a43c2583b4335"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME 94663783: This passes but shouldn\u0027t since the time zone separator doesn\u0027t match \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/ParseStrategy\u002BRegexComponentTests.swift"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"3579241b8572d4fb8fd109f1dd31bf628d91a7e22e5cb28e3005186258649ab3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Parse integers greater than Int64 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationInternationalizationTests/Formatting/NumberParseStrategyTests.swift"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e3137470037472ec30e75099f0812950b1fe7830f9c8cb40297bbfd04723a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Parse integers greater than Int64 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \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/FoundationInternationalizationTests/Formatting/NumberParseStrategyTests.swift"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"886fc9c15df9b2d0b5db2d4c17bfba9274a2bb0a5a63995e6894c5f9e4d21761"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This matches \u0022,345\u0022 as it matches ICU\u0027s decimal format \u0022#,##0.###\u0022"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tests/FoundationInternationalizationTests/Formatting/NumberFormatStyleTests.swift"},"region":{"startLine":2046}}}],"partialFingerprints":{"codehealthFindingId/v1":"680fa94a5f57f57e90b30a9ff61b848eb099d161b25e1d3161f3048a93486171"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no installation or build instructions: The README does not state how to obtain the Foundation API from Apple platforms or the Swift toolchain. Add a one-line install instruction: \u0027For Apple platforms, use the built-in Foundation. For all other Swift platforms, import \u0060FoundationEssentials\u0060 or \u0060FoundationInternationalization\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa6bfcd5c6ae231d1b8ee99bced50b832d1f61cde9da6cbb533467b879a57db"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate operations for date arithmetic. \u0060addingTimeInterval\u0060 is the legacy/Foundation-specific name, while \u0060advanced(by:)\u0060 is the standard Swift Sequence/Collection protocol method. While \u0060advanced\u0060 is often preferred in modern Swift, exposing both without clear deprecation or distinct domain usage creates redundancy.: Deprecate \u0060addingTimeInterval\u0060 in favor of \u0060advanced(by:)\u0060 or ensure \u0060advanced(by:)\u0060 is the primary documented API for addition, treating \u0060addingTimeInterval\u0060 as a legacy alias. (signatures: Date.addingTimeInterval(TimeInterval): Date | Date.advanced(by: TimeInterval): Date)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d5d02f51450bab0f186977949978b5ce8c712d929b87a6bd301b6c9594680b22"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate operations for in-place date arithmetic. \u0060addTimeInterval\u0060 is a mutating method, while \u0060\u002B=\u0060 is the operator overload. In Swift, it is idiomatic to provide the operator and let the compiler handle the mutation, or vice versa, but having both a distinct mutating method and the operator for the same simple operation is redundant.: Rely on the \u0060\u002B=\u0060 operator for in-place modification. Remove \u0060addTimeInterval\u0060 unless it serves a specific semantic distinction not evident here (e.g., if it handled overflow differently, which it doesn\u0027t appear to). (signatures: Date.addTimeInterval(TimeInterval) | Date.\u002B=(lhs: inout Date, rhs: TimeInterval))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"301a0bd9f517913b8f58c9f3132bfda89e2df7591dce703d7a1cb60945a06539"}},{"ruleId":"D26","level":"note","message":{"text":"Projects may be oversized for their cohesion: 1 of 1 project(s) overshoot their size bounds, lowering Project Cohesion to 0.0/10. The most over is \u0060(repository root)\u0060 (120997 LoC, 213 public types across 32 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":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30f1da34a90bc609df85ce392f0bc891ea7094f5312611553612140138d6a9bd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"31880386d9e46e34fe66ee71a07f64611b086ae79aad252ecbcd6f72b7f71f80"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6c74b96352202611aaa1d00a26573421abb0af4909eedfeb6c458c108bf1ed8d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30849cf10c83b0269bb68426401e10bccbf8d6f91cb130d49a55971f6cb30730"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a192da2e98942e27f4b5791265ff1c8f05727967d8ce1b4a97572ee257507567"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"09c73dc0ab4ef79abeb2428d351bdd42c86871563aaa369d32b44d5dfdd2ae8b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7cbbf4df9dd6cf280dea6d4ae229cf81b125559ab2290d4249e69d701ff2d3d9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"428f067c43abffd6b5161f685be81af560aa9725dcee5312b15f208b78ad9ece"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D34","level":"note","message":{"text":"Orphaned files with no living knowledge: 15 of 310 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; 310 of the 348 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: Sources/FoundationEssentials/Formatting/DiscreteFormatStyle.swift, Sources/FoundationInternationalization/Formatting/Date/Date\u002BAnchoredRelativeFormatStyle.swift, Sources/FoundationEssentials/AttributedString/AttributedString\u002B_InternalRuns.swift, Sources/FoundationEssentials/URL/URLTemplate_Expression.swift, Sources/FoundationEssentials/URL/URLTemplate.swift, Sources/FoundationInternationalization/Duration\u002BUtils.swift, utils/update-iana-charset-names-impl.swift, Sources/FoundationEssentials/Data/Data\u002BSearching\u002BBoyerMoore.swift (and 7 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":"warning","message":{"text":"Change coupling: Decimal\u002BCompatibility.swift \u2194 Decimal\u002BConformances.swift: \u0060Sources/FoundationEssentials/Decimal/Decimal\u002BCompatibility.swift\u0060 and \u0060Sources/FoundationEssentials/Decimal/Decimal\u002BConformances.swift\u0060 change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \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). They sit in the same directory, and in this ecosystem sibling files there normally share one namespace/package \u2014 so a direct reference between them needs no import and this pass cannot see whether one exists. Read the pair before acting: if one file only DECLARES what the other consumes (a constants/types file beside its user), the co-change is definitional and the question is whether the split earns its keep; if they duplicate structure, extract the common part into a shared function or type they both call; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u0060b898bbce\u0060 \u0060Decimal\u0060: further performance and correctness improvements (#2131); \u0060af8c8086\u0060 \u0060Decimal\u0060: use \u0060UInt128\u0060 significand to speed up operations (#2022); \u0060aec5170b\u0060 Bin compat: NSDecimalString should accept dictionary in addition to l\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/Decimal/Decimal\u002BCompatibility.swift"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebcf55f167569765d07682ac52b37a9a8fc2808edbfea15f1f645d255b5efcaf"}},{"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":"P3","level":"note","message":{"text":"No SAST: No static application security testing detected. For this repository\u0027s stack, add CodeQL\u0027s Swift pack (Swift/Xcode) (or \u0060semgrep --config=auto\u0060, which runs on any language) as a CI step. What was searched, so you can tell an absence from a miss: the 7040 CI workflow file(s) in this repository, and the scanner and linter configuration checked in beside them. A scan that runs outside CI, one configured in your forge\u0027s web UI rather than in a committed file, or a tool whose name is none of those this check carries, is not seen \u2014 if that is your case the row is wrong, and saying so is more useful than adding a second scanner."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6e54424179c892f03ef2fd003130ac4bd43f39bbf3b1ca0a0143e25acb80ec87"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060pathLength \u003E rootLength \u0026\u0026 pathBuffer[pathLength - 1] == UInt8(ascii: \u0022/\u0022)\u0060 appears character-identically in 2 files \u2014 Sources/FoundationEssentials/URL/URL_C\u002BEncoding.swift, Sources/FoundationEssentials/URL/URL_File.swift. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URL_C\u002BEncoding.swift"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f9e0e01768aeb3b7097d3aafb30f1e4faa7ead565065a75c14adc1ea84e0a7"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060v == UInt8(ascii: \u0022/\u0022) || v == UInt8(ascii: \u0022?\u0022) || v == UInt8(ascii: \u0022#\u0022)\u0060 appears character-identically in 2 files \u2014 Sources/FoundationEssentials/URL/URLParser.swift, Sources/FoundationEssentials/URL/URL_Parsing.swift. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4947a2aada94855a45c206984ceb2bcb403b00a6d85d44ebd4f7e9fa32993cb"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060v == UInt8(ascii: \u0022?\u0022) || v == UInt8(ascii: \u0022#\u0022)\u0060 appears character-identically in 2 files \u2014 Sources/FoundationEssentials/URL/URLParser.swift, Sources/FoundationEssentials/URL/URL_Parsing.swift. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Sources/FoundationEssentials/URL/URLParser.swift"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"934ec2f2c3edde6048e1a8401347db239478221612283673d325773c6e17824b"}}],"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-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-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-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."]}]}