{"$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":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"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":"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":"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"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"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"]},{"target":{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"],"owasp":"A05:2025"}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"],"owasp":"A03:2025"}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"],"owasp":"A02:2025"}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"],"owasp":"A03:2025"}},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"],"owasp":"A08:2025"}},{"id":"D44","name":"Platform End-of-Life","shortDescription":{"text":"Platform End-of-Life"},"helpUri":"https://codehealth.canine.dev/dimensions/D44"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AX6","name":"Interface segregation","shortDescription":{"text":"Interface segregation"},"helpUri":"https://codehealth.canine.dev/dimensions/AX6"},{"id":"AX8","name":"Test isolation","shortDescription":{"text":"Test isolation"},"helpUri":"https://codehealth.canine.dev/dimensions/AX8"},{"id":"AXB2","name":"Runtime readiness","shortDescription":{"text":"Runtime readiness"},"helpUri":"https://codehealth.canine.dev/dimensions/AXB2"},{"id":"ED5","name":"Idempotency","shortDescription":{"text":"Idempotency"},"helpUri":"https://codehealth.canine.dev/dimensions/ED5"},{"id":"GD1","name":"Unfinished \u0026 placeholder code","shortDescription":{"text":"Unfinished \u0026 placeholder code"},"helpUri":"https://codehealth.canine.dev/dimensions/GD1"},{"id":"IC1","name":"Incompleteness \u0026 stubs","shortDescription":{"text":"Incompleteness \u0026 stubs"},"helpUri":"https://codehealth.canine.dev/dimensions/IC1"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P10","name":"Library API \u0026 versioning","shortDescription":{"text":"Library API \u0026 versioning"},"helpUri":"https://codehealth.canine.dev/dimensions/P10"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P2","name":"Observability","shortDescription":{"text":"Observability"},"helpUri":"https://codehealth.canine.dev/dimensions/P2"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"PF2","name":"Allocation hygiene","shortDescription":{"text":"Allocation hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF2"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"X1","name":"Async correctness","shortDescription":{"text":"Async correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X12","name":"Unreachable branch","shortDescription":{"text":"Unreachable branch"},"helpUri":"https://codehealth.canine.dev/dimensions/X12"},{"id":"X13","name":"Undrained process stream","shortDescription":{"text":"Undrained process stream"},"helpUri":"https://codehealth.canine.dev/dimensions/X13"},{"id":"X14","name":"Bypassable address classification","shortDescription":{"text":"Bypassable address classification"},"helpUri":"https://codehealth.canine.dev/dimensions/X14"},{"id":"X15","name":"Unvalidated length from an untrusted reader","shortDescription":{"text":"Unvalidated length from an untrusted reader"},"helpUri":"https://codehealth.canine.dev/dimensions/X15"},{"id":"X16","name":"Unfloored truncation loop","shortDescription":{"text":"Unfloored truncation loop"},"helpUri":"https://codehealth.canine.dev/dimensions/X16"},{"id":"X17","name":"Uncapped recursion over a caller-supplied document","shortDescription":{"text":"Uncapped recursion over a caller-supplied document"},"helpUri":"https://codehealth.canine.dev/dimensions/X17"},{"id":"X18","name":"Disposal-pattern correctness","shortDescription":{"text":"Disposal-pattern correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X18"},{"id":"X19","name":"Unrestored process-global state","shortDescription":{"text":"Unrestored process-global state"},"helpUri":"https://codehealth.canine.dev/dimensions/X19"},{"id":"X20","name":"Mistyped argument guard","shortDescription":{"text":"Mistyped argument guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X20"},{"id":"X21","name":"Side-effecting pattern guard","shortDescription":{"text":"Side-effecting pattern guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X21"},{"id":"X22","name":"Contradicted release guard","shortDescription":{"text":"Contradicted release guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X22"},{"id":"X23","name":"Unguarded diagnostic materialisation","shortDescription":{"text":"Unguarded diagnostic materialisation"},"helpUri":"https://codehealth.canine.dev/dimensions/X23"},{"id":"X24","name":"Document value interpolated into markup unescaped","shortDescription":{"text":"Document value interpolated into markup unescaped"},"helpUri":"https://codehealth.canine.dev/dimensions/X24"},{"id":"X25","name":"Inert configuration knob","shortDescription":{"text":"Inert configuration knob"},"helpUri":"https://codehealth.canine.dev/dimensions/X25"},{"id":"X26","name":"Unsynchronised callback handoff","shortDescription":{"text":"Unsynchronised callback handoff"},"helpUri":"https://codehealth.canine.dev/dimensions/X26"},{"id":"X27","name":"Collection changed while being enumerated","shortDescription":{"text":"Collection changed while being enumerated"},"helpUri":"https://codehealth.canine.dev/dimensions/X27"},{"id":"X28","name":"Index access outside its own emptiness guard","shortDescription":{"text":"Index access outside its own emptiness guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X28"},{"id":"X29","name":"Per-element action decided by a fixed element","shortDescription":{"text":"Per-element action decided by a fixed element"},"helpUri":"https://codehealth.canine.dev/dimensions/X29"},{"id":"X3","name":"Exception handling","shortDescription":{"text":"Exception handling"},"helpUri":"https://codehealth.canine.dev/dimensions/X3"},{"id":"X30","name":"Support guard that admits what it rejects","shortDescription":{"text":"Support guard that admits what it rejects"},"helpUri":"https://codehealth.canine.dev/dimensions/X30"},{"id":"X32","name":"Type resolved by simple name across every loaded assembly","shortDescription":{"text":"Type resolved by simple name across every loaded assembly"},"helpUri":"https://codehealth.canine.dev/dimensions/X32"},{"id":"X4","name":"Structured logging","shortDescription":{"text":"Structured logging"},"helpUri":"https://codehealth.canine.dev/dimensions/X4"},{"id":"X5","name":"Nullable reference types","shortDescription":{"text":"Nullable reference types"},"helpUri":"https://codehealth.canine.dev/dimensions/X5"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"id":"X7","name":"Silent fallback defaults","shortDescription":{"text":"Silent fallback defaults"},"helpUri":"https://codehealth.canine.dev/dimensions/X7"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"QueryParser.attempt (cyclomatic 28): QueryParser.attempt has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: OperationsParser.attempt (cyclomatic 34) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score. This file is where this pass\u0027s cyclomatic complexity CONCENTRATES: quill-sql/src/main/scala/io/getquill/parser/Parser.scala holds 2 of the 6 methods over the threshold \u2014 including the worst \u2014 and 17 of the 31 points over it (55%), 2.8\u00D7 the next-largest file (quill-sql/src/main/scala/io/getquill/context/Particularize.scala at 6). No single row can show this, because each is measured only against the threshold: reducing this one file moves this dimension further than any other file in the repository."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"63e0ed0d68807d822cdb02d3fbcc007fc838e5e2cb989f487e52215d715db4c4"}},{"ruleId":"D1","level":"warning","message":{"text":"Dynamic.apply (cyclomatic 21): Dynamic.apply 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":"quill-sql/src/main/scala/io/getquill/context/Particularize.scala"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"4330c2b94d92d4739116f31fcabcebd4cff23ae1773d9c94851c3a287dcc6882"}},{"ruleId":"D1","level":"warning","message":{"text":"OptionParser.attempt (cyclomatic 19): OptionParser.attempt 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: OperationsParser.attempt (cyclomatic 34) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score. This file is where this pass\u0027s cyclomatic complexity CONCENTRATES: quill-sql/src/main/scala/io/getquill/parser/Parser.scala holds 2 of the 6 methods over the threshold \u2014 including the worst \u2014 and 17 of the 31 points over it (55%), 2.8\u00D7 the next-largest file (quill-sql/src/main/scala/io/getquill/context/Particularize.scala at 6). No single row can show this, because each is measured only against the threshold: reducing this one file moves this dimension further than any other file in the repository."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdbb0fdc625c9100fc7a610d9a64220ec8df8041d7b68e0b2307dca9f34c5f4d"}},{"ruleId":"D1","level":"warning","message":{"text":"PrepareDynamicExecution.processLifts (cyclomatic 18): PrepareDynamicExecution.processLifts 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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32ea7250ddd54fa1753770127d9d73aa25add3d44dbeb7b2a1fa71048ed1f1a"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticTranslationMacro.processLifts (cyclomatic 18): StaticTranslationMacro.processLifts 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":"quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dcf3a13a40158fe9442ae3e841577c65126ee67e35d3378cc5a7256b1b58a70"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticTranslationMacro.apply (cyclomatic 17): StaticTranslationMacro.apply has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1de21c5404af2f7fe408ff6e4e6881ae91955fc71fab8d144cccd05ec9fb59"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticTranslationMacro.apply (cognitive 36): StaticTranslationMacro.apply has cognitive complexity 36 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 4 (10 pts), match/switch 2, boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9a536f607a7a25786d9a2e5db5a54b548f765246453e8218f4a7b0cacf3e9e"}},{"ruleId":"D2","level":"warning","message":{"text":"ZioJdbcContext.transaction (cognitive 35): ZioJdbcContext.transaction has cognitive complexity 35 (threshold 15). Drivers by points: loops 6 (27 pts), match/switch 2 (8 pts) (nesting depth added 27). 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":"quill-jdbc-zio/src/main/scala/io/getquill/context/qzio/ZioJdbcContext.scala"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"8880e34eb61c97464f08a99447d42fd7d7147e04c637dd0cb0e95613b4ca0305"}},{"ruleId":"D2","level":"warning","message":{"text":"Dynamic.apply (cognitive 22): Dynamic.apply has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 8 (13 pts), if/else 7 (9 pts) (nesting depth added 7). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/Particularize.scala"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ac8eb6d9b919e0e65ab7978929da6af633d0dae7a795ebdaa4bb6b62504c17"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericDecoder.decode (cognitive 20): GenericDecoder.decode has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 4 (11 pts), if/else 7 (8 pts), boolean chains 1 (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/GenericDecoder.scala"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"05a7196c7aba9210c11672d2ca0f845a3344150225655a1311b68a6d14b9c38c"}},{"ruleId":"D2","level":"warning","message":{"text":"InserteeSchema.summon (cognitive 18): InserteeSchema.summon has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), match/switch 3 (6 pts) (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/InsertUpdateMacro.scala"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a9ba6b4397a9d9c598cc6afdd9bfb69a90cceda37b95f60fea2ffb3a76ffa7"}},{"ruleId":"D2","level":"warning","message":{"text":"PrepareDynamicExecution.processLifts (cognitive 17): PrepareDynamicExecution.processLifts has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 9 (10 pts), if/else 6, boolean chains 1 (nesting depth added 1). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own 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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"8553a6abfd3ce10a611bcc3b6b473f77b34ee58ab9b6d88a271d113b44961587"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticTranslationMacro.processLifts (cognitive 17): StaticTranslationMacro.processLifts has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 9 (10 pts), if/else 6, boolean chains 1 (nesting depth added 1). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own 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":"quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bba79e635d996bdb9b9ee4d57cce80ddb0d96e100d64435b6942992a5de47d8"}},{"ruleId":"D2","level":"warning","message":{"text":"ElaborateStructure.base (cognitive 16): ElaborateStructure.base has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 5 (11 pts), if/else 5 (nesting depth added 6). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a705ec1bbd339c8090867b3c9f1764b87f03013808b95a6323e2c772f00d8df"}},{"ruleId":"D2","level":"warning","message":{"text":"OptionParser.attempt (cognitive 16): OptionParser.attempt has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 1 (nesting depth added 5). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"818e24493e8df65fc744fcd106790bb8594cb45b626cbc6383a939754d23c6bd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: QueryExecutionBatchIteration.apply: MethodTooLong \u2014 apply 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":"quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatchIteration.scala"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe58bf6705beefebe6d03efa8f03409924c5888894f129b311f7bf2f43f67e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/Parser.scala: FileTooLong \u2014 707 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 207 over it, 1.41\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7281ee886673441b136a0803275c450c6ef6f0348a95734ffe2b5c1fd99729bd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DynamicQuery: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/DynamicDslModel.scala"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"95baf629f891fc7488e115d2ee479aa8a5e7a91050679d625e2fc3314737ec53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (69 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala:602-670 | quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala:139-207 \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 \u0060quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala:602\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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"1707a8b8fef8ecefa110cad214a78f9711e0d48b65d2c0d8a15293db672e7559"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201313 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/context/InsertUpdateMacro.scala:347-355 | quill-sql/src/main/scala/io/getquill/context/InsertUpdateMacro.scala:360-372 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. 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":"quill-sql/src/main/scala/io/getquill/context/InsertUpdateMacro.scala"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"8006ab7fa0afb537b6612ddf4f5e71dbb0d86ac37f2963d45f9b3802ff41ac29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/generic/ConstructType.scala:38-50 | quill-sql/src/main/scala/io/getquill/generic/GenericDecoder.scala:401-413 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060quill-sql/src/main/scala/io/getquill/generic/ConstructType.scala:38\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":"quill-sql/src/main/scala/io/getquill/generic/ConstructType.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab267b6197c0dde9531f76c898e573a5995153fea67b407f453c5a604af8a5ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala:585-596 | quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala:122-133 \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 \u0060quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala:585\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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c705f668c9c68e1a0447ea7bb352027b21fc35ae0814d2d91fc96779790561"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/context/QueryMetaExtractor.scala:165-174 | quill-sql/src/main/scala/io/getquill/context/QueryMetaExtractor.scala:175-185 \u2014 both copies are in the same file, so extract the block 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 \u0060quill-sql/src/main/scala/io/getquill/context/QueryMetaExtractor.scala:165\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":"quill-sql/src/main/scala/io/getquill/context/QueryMetaExtractor.scala"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e0718d921398c3849798022ac2fa7290294920db9057a30e096d8e32227f1a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala:389-396 | quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala:399-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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"46394c4205383d046e66091e2d79d419ddcf0ace1ca2c74c3c85d3c24621f879"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala:100-104 | quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala:115-119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala:100\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":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"614fd20d95a00f6e9b08fa38d9e1b75dc63fb4623e40ffa4d535c639b3619f45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala:235-239 | quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala:247-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 \u0060quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala:235\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":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fef96ba5a0ceb554047ad49c5fde8c504a7232d4d4b97c99b82a7465bcb3fa4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatch.scala:494-498 | quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatchDynamic.scala:207-211 \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":"quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatch.scala"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6ab3cf214cb9fa210cd224def63702ba63f490553b3858e860688d8507df5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): quill-jdbc-zio/src/main/scala/io/getquill/context/ZioJdbc.scala:69-74 | quill-jdbc-zio/src/main/scala/io/getquill/jdbczio/Quill.scala:123-128 \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. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060quill-jdbc-zio/src/main/scala/io/getquill/context/ZioJdbc.scala:67\u0060 calls \u0060deprecated\u0060 and \u0060quill-jdbc-zio/src/main/scala/io/getquill/jdbczio/Quill.scala:120\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":"quill-jdbc-zio/src/main/scala/io/getquill/context/ZioJdbc.scala"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4882f345763be226b5464658009a6abb42b0770330abbaf89c366a1f1d27ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala:558-564 | quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala:590-596 | quill-sql/src/main/scala/io/getquill/parser/Parser.scala:177-183 \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":"quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f457e9b22f4b4783d751a9bfc64b2f8a147d51de2ae74410b18fc9f3ee93f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): quill-sql/src/main/scala/io/getquill/generic/GenericDecoder.scala:104-108 | quill-sql/src/main/scala/io/getquill/generic/GenericDecoder.scala:122-126 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/GenericDecoder.scala"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1a70a64ccdae9b0233a4ad3f641458b45bdf81645354b9261859dd3c4fa7e68"}},{"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":"354692e9b399bdd97973809bcc76410ab84655786f343227d0d6bfe7a7d29eb5"},"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"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Get rid of since it\u0027s now one 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":"quill-cassandra-zio/src/main/scala/io/getquill/CassandraZioContext.scala"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"8193838c222da53fb5d53f385921f18910b0e106fea232762d99c592d3408a53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Cassandra batch actions applicable to insert/update/delete and  described here: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-cassandra-zio/src/main/scala/io/getquill/CassandraZioContext.scala"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd40a3e79ed579287989ee548e29e4573946cb1771c02a6019f64501ff36200"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO quill.trace.types \u0027summoning\u0027 level should enable 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":"quill-cassandra/src/main/scala/io/getquill/UdtMetaDsl.scala"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e800e6beb07922fc1405e9f68b76267c53121f9e324e4b1d9ad195cb9d19278c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO quill.trace.types \u0027summoning\u0027 level should enable 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":"quill-cassandra/src/main/scala/io/getquill/UdtMetaDsl.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd59a2499a609dc81eaed637928c4b34c9af93427306d9785f3aec0b672d1511"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO quill.trace.types \u0027summoning\u0027 level should enable 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":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"498644a43a77bac3c7c12ad5cfd3be128ff19cd359312fae62f0e4986161af47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO quill.trace.types \u0027summoning\u0027 level should enable 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":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86a2eba9a789201e0b5b3dbdced144eccc1048eb9f14c69ef70188aaf5cff19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Insert \u0060naming.default\u0060 here in future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/UdtMetaDslMacro.scala"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"552a3ce474c571ae8c3f985a32079b772580c33dafebe79be621fec07162f36a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Shared between encoder and decoder. Extract \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef3b6d9b614beb8dd12007474e75672c40ce0eb21b1a326b5b73ce3489e0ad76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Try swapping out all asInstanceOf for asExprOf outside the expression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5ae5da76aca44aa383b92e169d02eedcd93e3a91a4426e96fff3fe7065cdc49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Try swapping out all asInstanceOf for asExprOf outside the expression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/UdtEncodingMacro.scala"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"97531f661761bf4447dacb7428e12e7d1ffe79e1abcb94a1ccd27667cf14f493"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO Is EncodingDsl needed 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":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/CollectionEncoders.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"f354c0536f668c662d32aa582883b2152bdd6046097b3534d628f1dd096d4ee3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO Is EncodingDsl needed 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":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/CollectionDecoders.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"d19d452c7d3925a8b4c4f8722236ef6da49f383b02e3cfee044aaaf2bd7794be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Remove variable b and put directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/encoding/CollectionDecoders.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7651b8cd0fef421642bebbdb11fa9dc90516044229dfe7feb4f59fd550b6c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Assuming chunk size is fetch size. Not sure if this is optimal. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/main/scala/io/getquill/context/qzio/ZioJdbcUnderlyingContext.scala"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"3382fcf2dbb7701e94ed10bfed82b364a91f27fc24233dff73c0c506f7dee7b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Try removing \u0027inline\u0027 and do the old implicit way and see if an error results \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/sqlserver/PrepareJdbcSpec.scala"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"43cfde2cf6353af261b656d768cc40aaa9ea357cf55cf3e5a86a889b8f78bc51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO In the Scala 2 Quill, move this module to portable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/main/scala/io/getquill/context/jdbc/ResultSetExtractor.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"a100084886a041eedbd8c788b7c08ad540d3dbffe22902b815a4b23c3c76478a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Not sure why it thinks the delete is dynamic. Need to look into 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":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/postgres/PeopleJdbcSpec.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce82e1584484da0ee2cd068508a2dd48ca987d8de1b2e155809259a3ff39b1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Need to implement prepare \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/postgres/JdbcContextSpec.scala"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"6744dbd7f744b0d81363fef5f080caf1edba14c77ce825c0d5d2c6440e4f8d30"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack because Quill does not have correct SQL Server infix concatenation. See issue #1054 for more info. \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":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/sqlserver/OptionJdbcSpec.scala"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c977aa1de609e8e91d98f4d4cac18c930a88d6d6d5cee38743f56651091ccf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Doing this with a runtime query should throw an exception (for now) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/InsertAdvancedSpec.scala"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"3182085cc69a1d15051e7f60727e0e9ab25157d9ed9d86a12d3b846f0aca16d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Doing this with a runtime query should throw an exception (for now) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/InsertAdvancedSpec.scala"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"9013f952c6c5b7e0a6ba3bdc3e7ab3ffd35b8bc6303ae385dfd8ba4c91dc3d7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Doing this with a runtime query should throw an exception (for now) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/InsertAdvancedSpec.scala"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec9a894ba2e362bf61146ecba27cc010b4f9926687d5f2ada5c026e363e90a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Doing this with a runtime query should throw an exception (for now) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/InsertAdvancedSpec.scala"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae2f82dc384b5f578efdb0ddd69a2d840831c1b914890bf3aea688aeb449361"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Doing this with a runtime query should throw an exception (for now) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/InsertAdvancedSpec.scala"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"81352defca5eca4debd0a495ddacb9a6166e10f86b2de38530ba0ad214818bc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Variation of this with only InsertMeta, and well as both InsertMeta and SchemaMeta (inline, and dynamic) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/InsertAdvancedSpec.scala"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e25b72cc9c915604f9ce14e5d18ff45e25fb1d7e3a49efde46ee86f2c66554a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Variation of this with only InsertMeta, and well as both InsertMeta and SchemaMeta (inline, and dynamic) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/InsertAdvancedSpec.scala"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"aad3580ab8ca48dbb02fc9d0af7c8128df64079198fecfc9a17bc11e705caad5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO These should fail in the parser should look into throwing an error for them \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/context/sql/idiom/SqlIdiomOptionCompareSpec.scala"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b95714b737f9859168af177e29a129dd93fd5668a6659bfcbd76f0f31604bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Should look into making these cases fail in the parser \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/context/sql/idiom/SqlIdiomOptionCompareSpec.scala"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d20226344ad23ee21b948e12f07cd6b566baa4eb16cb11fa728daec7925e13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Add this arrangement as a use-case for the testing of the expander \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/examples/TypeclassUsecase_Repetitive.scala"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dfee1a678ad55ce6d5c0030eddc6eaca23cfeeda3cc61abfb60ca18d4120e2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //   // TODO Is this even allowed in dotty? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/ValueTest.scala"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f74f03d9150f71ebcec50a376b3babf18a6ff89870bc448e53c624f0b249763"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Is this still true of Dotty? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/QueryTest.scala"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cbac2143db49fdab73d09c592257c79022b68186993d85c3c114b490537f451"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Is this even supported in Dotty? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/QueryTest.scala"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ebb1e3b123927caac7b764232762c8ed5aa8360ccc29f23f79256c052095752"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Option check on an entity should not compile. This should fail in the parser, see there for info. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/OptionOperationTest.scala"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"739daecdb7d80e7e9bc8813e927c7eb605db171969ada8ab0297ee0373ad4d92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Need to introduce clauses in the parser to fail on the below constructs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/IdentAndPropertyTest.scala"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"372baeeefcba4da61086a8071561d77bb359403b9493cef6f42de2cb61eb9073"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Does Dotty even support 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":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/ActionTest.scala"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"112fd8c5417720a94f39140983bdf82f47f3b8c3b082d0c6fac289d827ce6f68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Does Dotty even support 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":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/ActionTest.scala"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c12dc65447ecf0e816e22e9bb1df1824aed72f8a2e32c4c38d3e6c6c0a51bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Double Quoting is not supported yet. Need to look into how 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":"quill-sql-tests/src/test/scala/io/getquill/ported/quotationspec/ActionTest.scala"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e94cf8a91e38304f56069a2f3986ff4646b5fe92fa4d86f42af92e4725c306"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Back 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":"quill-sql-tests/src/test/scala/io/getquill/ported/sqlidiomspec/QuerySpec.scala"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"11dfaffa39e8683ff7be9ef7f6058d2ce5f109e7dafff6c73f28f4f2f093cab3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO flatten left flatMaps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/ported/sqlidiomspec/QuerySpec.scala"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbdf768d114143eec2136220266f5507965634304b71bb9f8868b31b1eac5390"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Verify Quat Later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/DynamicDslModel.scala"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f873bc07b25ecb2d2959fa9ba6eddfdb73e52dd66c4f93734e75d2efdc2064"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Verify Quat Later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/DynamicDslModel.scala"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa7d7be537ce290cd901c908d3f9c83fcae8ee8e4c0e0fe9f7f5c3eb69f5d7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Try changing to Any =\u003E T and see if exceptions happen anywhere \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/DslModel.scala"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07c57a243f1c3eddfd1b11af11eaa3a8818bbb7202793732710e6ef7598de88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO I think we should get rid of this operator. Unquote should be put on this via an implicit class which causes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/DslModel.scala"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad5c24176a38c2e76fbcb51919bd9fb3c21f5ee2f2b469d5384b7981b4bd4b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Does this need to be covariant? It is in current quill. Need to look up what use cases they are for covariant schemas. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/DslModel.scala"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cbb91ca5a07021d3dedcc4b8f34cee729c77d55fedb80cc8edb29d818043378"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Rename to EntityLift \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/DslModel.scala"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"059c328315f827ac9a9f473f852ac5b2a6ff48be467b27f1b691fbbc6ab5b6b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO This should be logged if some fine-grained debug logging is enabled. Maybe as part of some phase that can be enabled via -Dquill.trace.types config \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0727037abbc604f4ade941668b0d629744e92635da491e8c51bda6a51c90632"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO This should be logged if some fine-grained debug logging is enabled. Maybe as part of some phase that can be enabled via -Dquill.trace.types config \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb80ce86687f9f2957f7ea95da99576cb458a79c5fff86ebf6001e1120c2a014"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (MAJOR) Really should plug quotedExpr into here because inlines are spliced back in but they are not properly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed985ca68561558832d7c21ce3a02d7da983798be12add954a716fe35cdb80e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO summon a Expr[StaticSplicer] using the T type passed originally. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/StaticSpliceMacro.scala"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"de6f85078178771da541623e168f547260dd15b0447891306173f99c64512859"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Long explanatory message about how it has to some value inside object foo inside object bar... and it needs to be a thing compiled in a previous compilation unit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/StaticSpliceMacro.scala"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"11edb5a432fff4a7aec71265d5ca3f4cdca8629513569002c49e63e6f15d3f19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Long explanatory message about how it has to some value inside object foo inside object bar... and it needs to be a thing compiled in a previous compilation unit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/StaticSpliceMacro.scala"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"8489b656e79fd618f0a9136aa8162522d0ee0a0e2ad51bc8b3ff06ed244a67f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Maybe only check module owner if Path is 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":"quill-sql/src/main/scala/io/getquill/context/StaticSpliceMacro.scala"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"5080ab2c7fba248eb876a2987e6fa17b1b0d702a338db57556d2e700047bc3d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // SchemaMeta(quote { querySchema[T](entity, columns: _*) }, \u00221234\u0022) // TODO Don\u0027t need to generate a UID here.It can be static. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/SchemaMetaMacro.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4467277d7329f25ed0d5ec46677927d216cecd72b2e27e3b6d1382c4f3c4f12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO If we want to support functionality to resolve all LazyPlanters into \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QuoteMacro.scala"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ad84319ef5bbe483aa74a89131eaf48371895c80aec75acce5a50ee155b5603"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO First one for each UID should win because it\u0027s the outermost one, should make sure tha\u0027t the case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QuoteMacro.scala"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"31a7b8537898d30d67f70db75e3d7d22e826f8aae68fc4cdff86c6857c3d108f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo try astMappingFunc rename to \u0060Ast(T =\u003E r)\u0060 or $r \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryMetaExtractor.scala"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"02bddfcd2f995db992b8a0c70f0b383518c32b1d845584d8104cd3ed21f369dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Dedupe the lifts? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryMetaExtractor.scala"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2fdf0fdc2e4f97336734151f18456eb7fd25c9cc4be4da0029714e59f1761e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Make QuotationLotExpr(meta.reseal) match Uprootable(_, _, _) for better 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":"quill-sql/src/main/scala/io/getquill/context/QueryMacro.scala"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e9732ea8b6b7cc732dfb8a2d3e52da3c0472cad4a81752beccee77453288f9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO In the actionQueryAst should we make sure to verify that an Entity exists? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatch.scala"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b17e99d70d9f34ecbd73123d3dce577a2f94e11b3e874fd48f94c6629185278"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO If all the lists are not InjectableEagerPlanterExpr, then we need to find out which ones are not and not inject them \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatch.scala"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f55e130b49cc225bbff295379964a989eff34c3e835eacf9ab1c016c1a11b82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO report via trace debug \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatch.scala"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"c571c2eccd481ae9857edbcfd3947b882cd40ed7f011a1789fd9669284eadf04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO report via trace debug \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatch.scala"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"91d298c725d740a32a2389f7073a39a4900cb8adbf1f12caf629d15a54698726"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO check that there are no EagerEntitiesPlanterExpr other than in the primary planter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecutionBatch.scala"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"50626886e50ba6b855eab5f6a34cc98a4cb8b9ff764c531351c1599ff200aaba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Allow passing in a starting index 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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"d794bcd57bcb8d89fda6c1d7c60a45368850721579b5f6c4579ba2c14eddbbad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO When a trace logger is found instrument 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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae4391d85e4e8e6eb1c1344e46e8f2a610854bcd71cae518d5ad084c667045f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO What about when an extractor is not neededX \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"e087ee6aae6bb8012f18cb7b9594fc34ed02cdbb9a8b6715d3db428132666c22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Should make this enable-able via a logging configuration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"506c438cfe493ca6b536980b18b2183cdece83bed8ae23dca476a98f92b934a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO don\u0027t really need lift-sorting in PrepareDynamicExecution anymore? Could use liftsOrderer to do 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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4906308f2cfdda8fb5b076db1df6785158634aaee9a980aa08017a9c5bd422"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Also need to account for empty tokens but since we actually have a reference to the list can do that directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/Particularize.scala"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d8908e59fd7a03b592f3df52b474dc3a21ad4ee76de818ef324e03e32ab9b84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Move this method to testing code since this method is only accessed by other macros in the source \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/LiftMacro.scala"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a33a0379671f86fa21e3eeda2691ecbaf8fd7c8cc7c0a142079eb857095e5d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Use this functionality to test the internals of liftInjectedProduct i.e. see if the correct encoders are summoned \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/LiftMacro.scala"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"582e54b7fc20c83f57c2c80ce1192bde938d601892db317bb5145981e7ffcbc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Injected =\u003E Injectable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/LiftMacro.scala"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"468c44dbd41f203883b546320a5c377ca087fc03baece82d04b4b69295aaebe2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Configuration to ignore dynamic insert metas? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/InsertUpdateMacro.scala"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70b0b042f493eae471c7b8c6f745e4fdc38c0d35e2f35b46b3406437d85bec0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO, Ast should always be a case class (maybe a tuple?) should verify 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":"quill-sql/src/main/scala/io/getquill/context/InsertUpdateMacro.scala"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"3256f8c483ee50a1dae2802cc2da77fe0b2bdd1a7df4098a8d3a04271138cbfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO where if there is a schemaMeta? Need to use that to create the entity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/InsertUpdateMacro.scala"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"86afda227173f35236320e0df12e213cdae3dca3f43fe3bb8b59218784807008"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO In the Scala 2 Quill, move this into the Portable module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/ContextEffect.scala"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab7365c63994d8d284e93cd7e88862c539d6520fb38986ba3893cb5dd078531"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo add \u0027prepare\u0027 i.e. encoders 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":"quill-sql/src/main/scala/io/getquill/context/Context.scala"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72f88c8544867631bbc913f51670b6b6bee336d7bb91230ab33e657e037788c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO convert int back to index \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/mirror/MirrorEncoders.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dde701d22f9ad9a075bba9acecadca1e7bcb9adc5592b77158d7ad79fd73d0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Good use-case for zio-chunk \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa5cab97941ee3f1e5b8f405b6dc6a428a14078755de899df24c23106711d95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Rename to Structure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"1022b84bb15e9218a196d08d78cc5fecd915dde7743b1e68cf3dad65220b04ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Describe this as better error messages for users? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"663bd56cd3a96b5d1c20831c668a656f6cc361874c7820fb718f4ece213d1b28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Need to add datatype to Term so we can also verify types are the same for the coproducts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"99c2e67c159c15a27a24b0229465e89b8170e6bc78c8f2e03ee3763bb8118eb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Check if there are zero? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"c65a16bccaa97c4bd2dd537ed22ee0a930fb0be596655c9197908c683d1c8511"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Specific quat inference \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b0feb95c3b2895f392eaa1ef8dc58cf79a6cbcb9a24713dc492881ba07e8e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Is this right? Should it be OptionTableMap? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"5563e764adbd73ab93f201b32f9a97463295af3fa0c56e8c0c9a79e48afd880d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO These calls are expensive \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa5605741830294ef8dca3bce9ea5486dfdc92dbcb05fad779b5d7402b6b88ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Make sure you can summon a ColumnResolver if there is a SumMirror, otherwise this kind of decoding should be impossible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab00dbac25794cd9b50ebb1473b4f629bca47965121de787495a724ca6481a8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Should have specific tests for this function indepdendently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ElaborateStructure.scala"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"100934b273ed3fcdf97d7fd4d8b6326e3ccbd79b9598dc7914661deee4e6f3b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Unify this with DeconstructElaboratedEntities. This will generate the fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/DeconstructElaboratedEntityLevels.scala"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"897f4340e84df0e6ab7951f719e95ea7ea62a3ad3a8617599134ad42b0c3206e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Do we need to include flattenOptions? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/DeconstructElaboratedEntityLevels.scala"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86c146e51c5b498a7d4c51cad1f76738074a76de4f877bf51b4367bf258b570"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO For coproducts need to check that the childName method actually exists on the type and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/DeconstructElaboratedEntityLevels.scala"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade682bb4e0c18a2f70a9320f39995df4b29925345e70ac60222be162a152bee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO For coproducts need to check that the childName method actually exists on the type and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/DeconstructElaboratedEntityLevels.scala"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"d216ef70394e000a1dfe25138c4edfe1d22cdead891b802e11ee36c2aa09be85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Better error describing why the encoder could not be syntheisized if the constructor doesn\u0027t exist or has wrong form (i.e. != 1 arg) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/AnyValEncodingMacro.scala"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"680dcc1ce737bedd8af819fe47989f087584d531521f509e0008ea010393d451"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Better error describing why the encoder could not be syntheisized if the constructor doesn\u0027t exist or has wrong form (i.e. != 1 arg) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/AnyValEncodingMacro.scala"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7cc180ea0dac6fd88ef3aade2193f59d5e65400db842193e2208aaf34cc6ad4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Move the actual macro that calls this to a test. The regular code should only use SummonTranspileConfig.apply inside of other macros \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/SummonTranspileConfig.scala"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a9e17b31025cf9f52af16e93847e9405ed50fa9230af2f59cae21e1b3a57b98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Move this to a test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/SummonTraceTypeUse.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a48caf9f2f0cf5827d26b90b0375ed9bf6892117129db7a2ac3d6a02e58092"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Move this to a test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/util/LoadObject.scala"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe1336877aaeb64960a65d4dc51314f3b681f58146baa1f0f9b5cd731c6f293"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO I like this pattern of doing \u0027Term\u0027 in a sub-object should do more of this in future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0db0a1b0a19388a00ba2d7fd5c39b50f724ed1a31ea65be01baddf8d60bb980"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this cast is unsound \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1c94b4176bcffd23cc1fa26461e6f7caf9686ede08fbc3ebbb130ad69329879"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this cast is unsound \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd37f0d00ddb3e444af331576d32eacde92aa8507884273736863dcfb6a6ff50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Change to \u0027is\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"08564ecfada6aae519cdee3e54c3c399b9b7adfef30b3ba8157cdd3ced814627"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Change to \u0027are\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/Extractors.scala"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b6ddb3d23403bae0d9cf33b0547a7397e1a305a04361b3a04b9fdadc8b8666"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Change to \u0027replant\u0027 ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/ExprModel.scala"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"2228698c428c21f0d184240810f2d8b0e9da42b7123fd084bcdf96df2e7f292f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Find a way to propogate PrepareRow into 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":"quill-sql/src/main/scala/io/getquill/metaprog/ExprModel.scala"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab03c2defa01ced0ef0b756bd7e07ce5c0c62819009c8882369c7fa415b61390"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Enable for trace logging \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/ExprModel.scala"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"1864a599e96e004bf9b5d430c004f9ec6fc741a9b36dce4285bacfddc336149b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Now since we have UntypeExpr this below might not be needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/ExprModel.scala"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"b275bc4f2fc31f5cc9c41dc7f2d7b28e07aa2deb6359ba65810b4a273b94d538"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Maybe use ==1 versus \u0027true\u0027 in this case. See how this plays out with VendorizeBooleans 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":"quill-sql/src/main/scala/io/getquill/metaprog/etc/ColumnsFlicer.scala"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f59bd68e379f405f5954ba54a9f0a8c42c9783b12f08af12fd64277f8f7b381"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Recursive delving for optional product types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/metaprog/etc/ColumnsFlicer.scala"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63349a631d1343e04d7009078d573f41aef34a4ed22ea48a6b99129eaa7def1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Change to same way of doing things as Lifter, then shuold be able to get rid of lift and tuple2 unlifter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Unlifter.scala"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1293bb2da22418627e8b945a47061312f3feb7a362e19a1fcce24915292a433"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Maybe want to go to stricter version of this going back to Some(apply(expr)). See comment below about quoted matching being covariant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Unlifter.scala"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ef3b7697d78effff7b8fa5ab6b4b4dd0d86c85f7d5d7e1118745fc180d09f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Is the matching covariant? In that case can do \u0022case \u0027{ $oo: OptionOperation } and then strictly throw an error\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Unlifter.scala"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cea3ce47308148569abdbeadb3fa6cf37ff17684bb2cfdebafe91385f250f77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Not sure why need to copy this from the quill-engine module. Maybe because it is only compiled for JS? Should investigate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/QuatPicklers.scala"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94f2ac306422079a18cb29eac6ba8b75a0e7a69dc8c302ba48ec10cbb31fe58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Get the inner ident and verify that it\u0027s the same is \u0027id\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"2af43530bbdeb2acb9f13276e4ecfec5fc7f205083400a1d8d1c90926b61bf2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // this is useful for things like (TODO Get name) where you\u0027ll have something like: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"128fcb65289b92f86609c306029c122908b08c8facb525e501b46c0cf93c7c2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Better site-description in 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":"quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"8205c680b2399fa0c567a7552c2e052465c7fc3897dfd9564dc9956f89d29bd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Better site-description in 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":"quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"38caa2c8aab2fb7e1dfdec1f69c35ec0f12c3e455dc6b17890cab78123ada664"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Need to verify that this is actually a tuple? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/ParserHelpers.scala"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"2372efc5b31137160ef699d84dd06139739c666c9f3e29cb4ba6d7ffeb993d1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add a before everything identity parser, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c42908d117a2729f5ea95d6864f255104bb045b29b0225564aae81f44e0241e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Add back once moved to the quill subtree because AvoidAliasConflict is private[getquill] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e1a2eecbe4088dcbd072da0de9a8259478628e16995c066057c641018cb25e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Better site-description in error (does other.show work?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c5a0e5bfc3f16c429b4c2f8fac25dc2cf989f64ec7cac327a6b4afe4eb24f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Pluggable-in unlifter via implicit? Quotation generic should have it in the root? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"feb8c4a4fcacb1b0a4922355a6ac93c6c38acc1ac0104f09c384895d11833aa9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // // TODO Verify that the idiom supports this type of returning clause \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de29822ecc20e3e41e789c178b284e9f040b9121b8cce7151e535c813603ed3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // // TODO Verify that the idiom supports this type of returning clause \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"992f59a208a99e15d2e76837f6be442da06459de7465270f7baf5d9ccb13f04c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO If is embedded warn about no checking? Investigate that case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca0ab24ce2d8e6c62e44217362fd0cdad0fd9040252e50bf67cbd8e632bec166"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO not sure how I want to do this on an SQL level. Maybe implement using SQL function containers since \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/parser/Parser.scala"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71599306358e274ae2d2507d79cfda56401478866fc91755322a1fdb14e18f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO I don\u0027t think anyValBehavior is used anymore, try to 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":"quill-sql/src/main/scala/io/getquill/quat/QuatMaking.scala"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bec7d4e458ea9eb2bf6505d933ca80e02655a66fc6aaedb9c089c084f44d31f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Either can summon an Encoder[T] or quill \u0027Value[T]\u0027 so that we know it\u0027s a quat value and not a case class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/quat/QuatMaking.scala"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"9855e0ea49f8c87c5811b101a314a49bbe02da6ff18026ba29333802ab1c30a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Improve by making specific flag check to see that it\u0027s a coproduct \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/quat/QuatMaking.scala"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"40405a101b1c531b709e5514a7997825c343bb2ca002b9ede2979ded717ff124"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Get field names for these quats if they are inside something 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":"quill-sql/src/main/scala/io/getquill/quat/QuatMaking.scala"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb440ef454fc4044e87428c17b6414280ce34ba37d9a3b5fb6938158b599509"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Move to the testing 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":"quill-sql/src/main/scala/io/getquill/util/UseSummonMac.scala"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"759932f6d51ae1b165eabf73f2bf4bd5d17c2d28e397d1cfb68b5f5003f3fc3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Move into the testing 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":"quill-sql/src/main/scala/io/getquill/util/SummonMac.scala"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d29e101070da496f38824932e0c27a7997d5eade77ec19d7a9aefc6ab7ade03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Note that this does not seem to work when .type is used directly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/util/LoadObject.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"392719b908cafc8ae36bfeb33188f0cfc7b8b93f8c0aaea036a76dd345e503f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO This is a hack! Need to actually use scala compile-time tpe.memberType(tpe.owner) over and over \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/util/LoadObject.scala"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a6c5f1abd90afebdf72ff384e110ce0038e99482a3a17b1f4cad887aed8fc8e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Move to a utils area \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/util/GroupByOps.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f949661d423af2c8e4196fafb33e641e90a882140829a62cd5ecf66a47b844d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Need to convert this to LinkedHashMap for ordering guarentees? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/util/GroupByOps.scala"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba3c9c651d945c92522625ab16b5e0cf6e23bd5934f31cc4e0dc612c4069e6ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Need to change ownership there to getQuill \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/util/GetTraces.scala"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"e57dc0a9034c7c7b7767960dc4c39ef46b83d89b1c609b31a07eaa62e416c7ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: What we need here is a lazy Either.Left!!!! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/util/CommonExtensions.scala"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b590338cd6d3041538087ca172fd51465860a16ca35a631dd7afbf2aa40d7e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Make a test of this case but with an eager lazy lift that shuold fail? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/QuotationTest.scala"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a14e14723b694f3f75edfbc1292b9efd4a110dffbd257d0450cdb3738fde16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO What\u0027s the AST for this? Why are parens around v making (v)? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/QuerySchemaTest.scala"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4bf3689a9dceb9ee4d90bb091e7e914955c1e5e6bed90cd9eb46db569aacfc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO automatically provide this in \u0027context\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/GenericDecoderCoproductTestAdditional.scala"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"05652aaf6d79bf649b5267f29f294a949c5689fc5740a27461b379ff4911c484"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO dsl does not support this yet but would be quite useful \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/BatchActionTest.scala"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"834e8964824ea7a30be964997c49eae04e196e1018dfde3b6814ef2d4b5f19dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Why does it not print that a dynamic query is being run? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/BatchActionMultiTest.scala"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f647411bf1d56bb2b92d3a256d8380f714afa3985f51e040beca71fb798c3d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO this one has to be dynamic because you can\u0027t have nested inlines \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/context/sql/PeopleSpec.scala"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca78815e7d8a30fecd60a4b1f6c3d8483a6c08e602eb0234be3a8bc70e791aa1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Leaving this dynamic for now. Should look into a static variant later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/context/sql/PeopleSpec.scala"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4ea252260d730ddb595ac2935d1e21d53248fe8816c119742cc773539f8525e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO this should probably be mentioned in the Docs somewhere? Might have some user impact. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/context/sql/EncodingSpec.scala"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e30bcf47fcb23b23a40d42090b9ae7dc5fa6ff0c2c06f32cfd1dab6fec5cf0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Typing error if add \u0060quote\u0060 around this. Examine that more closely \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/context/sql/DepartmentsSpec.scala"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba9d859c2284a1a68c4c9ca2bc90790a3bb433a2cd3b2d7fec0e049121bdcd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO need to actually write the test for this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/idiom/LoadNamingTest.scala"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"337dd1f73f63d2a5dcfb7cbf0322d05414e88fca72070068d6a4cafcfcfb57be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO these should specifically return a compile-time 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":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b2202063554febd363efb395dc7b9b86192476e27ce63919ea766705ada82c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Why doesn\u0027t this work? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdfcdf9559eb6fab357a929dd72ffec8e2e47cb9b014bf87e191719c4878b369"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // // TODO Always returns a value since QuotationTag quat is always value which it should NOT be. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"5810c57876a41bfa73a45eaef760f36a021beeaaf9fd5c2ae92d8276076d3907"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Does the non-inline version of this work \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"b75ff1a96f7f848f79a79f31a38be5b84224a025f390cf58e5dde9ee60040100"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Non Inline Version also once QuotationTag issue fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4ae7c030dbfa94f82cb8b4f68563873d1899117ad74d0c17ae42001c3f7a38f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Non Inline Version also once QuotationTag issue fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff47a25fb0208c5ccfe2521266db9af32cfd7f12e51e0178ddceb22032e305e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Non Inline Version also once QuotationTag issue fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"e772907f92fa3d16917fe5cf9950fc0b9abe71412045a99b2d9254647cf65e0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Non Inline Version also once QuotationTag issue fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"256e93e183986b84ee0827f91333a3b8c2c09c46d2870e9f432ed3c729bb0999"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO What about abstract classes? What does Flags.Abstract do? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee8e04509f1085586c5e88343b6179e3aba58a118943916fb8029d868f818ede"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Figure out issues with structural types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7861dbb2d345d92efc5791b36f7067ecc644d8f53c6a055acda2cf9817e41af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Figure out issues with structural types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/test/scala/io/getquill/quat/QuatSpec.scala"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1191ab2e2067b84e67c995bc991d8392cf6530bf94ea476d0e9b16f863a5055"}},{"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 (18525 LoC, 799 module-visible types across 34 directories). Review these for cohesion \u2014 draw the boundary inside the module first (group each responsibility into its own package or directory and keep the cross-boundary members non-public), since splitting a published package moves types between packages and breaks consumers."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d5a94650dc74886a0f1f08eb9fb6775f1fc395279ef7e901c970c9d26f767a72"}},{"ruleId":"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":"4268b90d356f26928e449494556f79283eabefe4c81b3a3dbe893c2cc8c0e4de"},"taxa":[{"id":"CWE-269","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-4","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"fd41ff826fce69585bee016ee2a9f22c2cbd5b253bfe061671b23515b6413b4d"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"5c2e5324ee0d40ac675d212e467ed590c576871919cc8789e115b5381b9252d8"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"92bbaf2dbbc5dcd8406086b1c9d27bd7accb2c9808c4102a0f34c47cae029a4f"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"c5f067e943989fd039ad70411013bf082a8588b9f38464ef16f66d6f48246c7e"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"4b7e202a747bafbe73bbf7ea084e7030fb32220cd71da160ad3120cc66252a80"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"a693593815c03c8924d91acc63def72bb58dfbd9dd45d36c9a0b63df57903e1a"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"d169db4cb023bae2479772e6f4006bce22ad6d7a740abdec1bf961c8f8f2db92"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"270db641e9fceafea09e18419fc9685c2c679a8e165bbff2e97b6a6ea0a6c76d"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"d72f5e65200e5dc699b908646d208b108f12b07b088c346409cabcda2df14a23"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"ad4d013ce05a3494f55f9162706af9c824b49e1f99e2feb54d5b050559ef78ab"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"496c27cadc00fdf8d5ccf5fab8af38a870a1d79098bd70ea8ebba482ea8a3719"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"9fb0933621eec8517a90f1c34c49e5205b76391f547ac25f09a696173455136c"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"16fc675212c0b8b20da7e3f2f58c00e6e7ec3bb989fc24224c5e2c20659ac663"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"3340dd4e53d3f4050488220fc5bcee1208b3708a7e53a910d434e90c728f6d44"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"37d5a502a3f209b43236d4d989633937e32d0da7612dae896eedcfac66ba59b2"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"a4cb1fc9aeb544d7a8a2112d66ef0c35c9e6231bf57705c39d74f4458285bd8c"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"21f1fcbee63bd707d008cfbaf4055d14acb868d8c4715059e037d701933df826"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"8a17d65696b21bf3059e03666f3193d39285fe14b5710de9239edbb4e4350c2a"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"71dc6bbf031da6bbd5eadd20daa651a0c9614f798b983b76d4beaf17d9b76450"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"76f25082684e5430f8f829bf608e8b2b0d971512a33242e1d1808f6047807b27"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"f23c862254c2adeb10a8bf68df4cedb07dfb7918a3e4af9e8cb9a9414fe37a8d"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"160e2c022b6238ef52ff3ad183b76fd0a9989579e03525741548023e42401129"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"5c1b27f444ee9d48ae76463cfd1bb763c2d0286df94968144ab53792bf5c9449"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"b081c55a682b8aae2c09204f5250eb9545ff3b7b770dbb047e7b78d2f1078d33"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"efb1418d94b4c57e06a30a1e16e2240b5d7b57fae885959d876e1fc2c3499842"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"d37595b5eaa56839213ad06483225e5faa69f56c09806b566107044177250776"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"1605775718c62496b5ef9a967ce6fe65c115febfb8264c316f4a72e91cffbb2d"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b6722f9a5008165f56b6600902a4db8048e0f7e0e371912841afab9ed5ffb641"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-552","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a39ea3b8bc2b069825a5462290d8fae1c07a9ead9ca569acd11a48e107ac47b7"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0a118153af24a908c7215d35ef2ae30dbec5b1735d40f025d8e4e62c9e86235b"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"21e27addb6e22f5bc58f488f944496bc9f978bbb945ad1555102f4736e3b2a44"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b7f5ee7f8b4822d5f61de1a7f19253635a542f2b8a476dfa158497feb838d9e0"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4c56b6de5cd75357c77458d09f59465ff83f28af6318e8201206d0b0ff690802"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"864f91d1561c90591c7a9504e8b3c6785bacb88419ce4b637f34fa5bb1a6a53e"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1985e35bb5d2d68eed52b87159194399755e7918082d97aa653442cb049f0ce8"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8e398ab8014917d3e00e56b7d49d66d1e0c3cb9d1161ee419fd4cea5e63af6de"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e5f4a5dcc07a89a7776211d4ae0bb2b176ca9a6382c375155a3a6e955b4b6add"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8803701c98d9e48ae14271b12a5730a4856e00ff6742e3666b4e1bbbe9dac6d2"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a07fbbfc64d3693087ab53663de38163446b030cb9ecad113151310361dacd55"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f1e2bf12c19910699dd81948d90660040971b34ddf5449c1ec7583d55a1673d4"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e83b518b7f52f2dcaa5ae6040062bb11c1eb9b8af4b47d50866778e1f843e3bd"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1a73219e8b4ed850404e013e2935eea6072bab6d4901593968bdda0e5d4e6cdd"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"416dc140b344db06d276e962217a233239f70e9ee30f0233400df7825f3fd2ec"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d023e9861df2454f0cd4ccb74c3d48a4b5c8b2026aaf9d46e210ab5bcc4e5dd7"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"10d1ba323d023aaf0acceb0dc5ba137aa42fabc6d8d516e5392799ee25f1d4c1"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4ba3b3675140fa0bccd093b4cfde22364e6974ee3d61e3314cc110aec6bbf061"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e6c0ef844bcb8f8a0584366d95f7f569afd17f93a56612b6349f9eb6039490e2"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d898ead3cb6851a9c54e73bc6ae279e3278075e205c37b914954178644ff335a"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5a13902b1051fbe84cb0f8f1bd28149556e172be228b67977645051e808983a3"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6705b7b8747f0f4bb2a71289c7f31e43dd9bec4d2bea44f8b66bd5337faa6bbd"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"476176a40f7dde5968156df41a3ad51fabec36db7b9ad2c78af7fdee298fccfb"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7bc8bc144e575fe14667fc73f2eae1d857974573ab008c8835ff6fc16cbf78ee"},"taxa":[{"id":"CWE-754","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A10:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d208dcb57bfba8c79227e057203f6cc3ed4ccac26d359f5419e6a7a487523cd7"},"taxa":[{"id":"CWE-754","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A10:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"aaa651737d405a5b95ca8d6625ba7eb3d934c1c05581dd7485932b34cedeafd8"},"taxa":[{"id":"CWE-754","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A10:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"006b44b5c8f44170bb1ec742e215f0af898b60838d61f70955846adb940524d4"},"taxa":[{"id":"CWE-754","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A10:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"461da5522e8b35e0e4aa98e95a4dcb569d69ee78a5e2bfb48c5d820d670b9945"},"taxa":[{"id":"CWE-754","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A10:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"},"taxa":[{"id":"CICD-SEC-9","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"},"taxa":[{"id":"CICD-SEC-9","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"},"taxa":[{"id":"CICD-SEC-8","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5d73105c21f2f693a4211955939949d7fc61d48765b8fb189e24a33b9628034c"},"taxa":[{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a4103ac6410a3a7cd6e0b4faa805f771cf107e09dc3d354af0bf79995d1fa3ad"},"taxa":[{"id":"CICD-SEC-5","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"AX6","level":"note","message":{"text":"Fat interface: CassandraContext[N] (34 abstract members): \u0060CassandraContext[N]\u0060 declares 34 abstract members: \u0060optionDecoder\u0060, \u0060optionEncoder\u0060, \u0060stringDecoder\u0060, \u0060bigDecimalDecoder\u0060, \u0060booleanDecoder\u0060, \u0060byteDecoder\u0060, \u0060shortDecoder\u0060, \u0060intDecoder\u0060, \u0060longDecoder\u0060, \u0060floatDecoder\u0060, \u0060doubleDecoder\u0060, \u0060byteArrayDecoder\u0060, \u0060uuidDecoder\u0060, \u0060timestampDecoder\u0060, \u0060cassandraLocalDateDecoder\u0060, \u0060stringEncoder\u0060, \u0060bigDecimalEncoder\u0060, \u0060booleanEncoder\u0060, \u0060byteEncoder\u0060, \u0060shortEncoder\u0060, \u0060intEncoder\u0060, \u0060longEncoder\u0060, \u0060floatEncoder\u0060, \u0060doubleEncoder\u0060, \u0060byteArrayEncoder\u0060, \u0060uuidEncoder\u0060, \u0060timestampEncoder\u0060, \u0060cassandraLocalDateEncoder\u0060, \u0060listDecoder\u0060, \u0060setDecoder\u0060, \u0060mapDecoder\u0060, \u0060listEncoder\u0060, \u0060setEncoder\u0060, \u0060mapEncoder\u0060. Counted over its ABSTRACT members \u2014 a \u0060def\u0060 with no body or a \u0060val\u0060/\u0060var\u0060 with no initializer, once per signature; concrete members, private and protected members, and members of a companion \u0060object\u0060 are not counted, because no implementer is forced to write them. A wide interface forces every implementer and caller to depend on methods they don\u0027t use (the Interface-Segregation \u0027I\u0027 in SOLID). Split it into focused role-interfaces."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-cassandra/src/main/scala/io/getquill/context/cassandra/CassandraContext.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"66887b64c2791daf78147c0bb67752ce4198e4566ef6de8060872dec0cd82210"}},{"ruleId":"AX6","level":"note","message":{"text":"Fat interface: SqlContext[Idiom, Naming] (28 abstract members): \u0060SqlContext[Idiom, Naming]\u0060 declares 28 abstract members: \u0060optionDecoder\u0060, \u0060optionEncoder\u0060, \u0060stringDecoder\u0060, \u0060bigDecimalDecoder\u0060, \u0060booleanDecoder\u0060, \u0060byteDecoder\u0060, \u0060shortDecoder\u0060, \u0060intDecoder\u0060, \u0060longDecoder\u0060, \u0060floatDecoder\u0060, \u0060doubleDecoder\u0060, \u0060byteArrayDecoder\u0060, \u0060dateDecoder\u0060, \u0060localDateDecoder\u0060, \u0060uuidDecoder\u0060, \u0060stringEncoder\u0060, \u0060bigDecimalEncoder\u0060, \u0060booleanEncoder\u0060, \u0060byteEncoder\u0060, \u0060shortEncoder\u0060, \u0060intEncoder\u0060, \u0060longEncoder\u0060, \u0060floatEncoder\u0060, \u0060doubleEncoder\u0060, \u0060byteArrayEncoder\u0060, \u0060dateEncoder\u0060, \u0060localDateEncoder\u0060, \u0060uuidEncoder\u0060. Counted over its ABSTRACT members \u2014 a \u0060def\u0060 with no body or a \u0060val\u0060/\u0060var\u0060 with no initializer, once per signature; concrete members, private and protected members, and members of a companion \u0060object\u0060 are not counted, because no implementer is forced to write them. A wide interface forces every implementer and caller to depend on methods they don\u0027t use (the Interface-Segregation \u0027I\u0027 in SOLID). Split it into focused role-interfaces."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/context/sql/SqlContext.scala"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a4580a0e9f8dbc78a74ac9287e065ef6149a4070294a22c5e8370ea2da82fc"}},{"ruleId":"AX6","level":"note","message":{"text":"Fat interface: ArrayEncoding (24 abstract members): \u0060ArrayEncoding\u0060 declares 24 abstract members: \u0060arrayStringEncoder\u0060, \u0060arrayBigDecimalEncoder\u0060, \u0060arrayBooleanEncoder\u0060, \u0060arrayByteEncoder\u0060, \u0060arrayShortEncoder\u0060, \u0060arrayIntEncoder\u0060, \u0060arrayLongEncoder\u0060, \u0060arrayFloatEncoder\u0060, \u0060arrayDoubleEncoder\u0060, \u0060arrayDateEncoder\u0060, \u0060arrayLocalDateEncoder\u0060, \u0060arrayUuidEncoder\u0060, \u0060arrayStringDecoder\u0060, \u0060arrayBigDecimalDecoder\u0060, \u0060arrayBooleanDecoder\u0060, \u0060arrayByteDecoder\u0060, \u0060arrayShortDecoder\u0060, \u0060arrayIntDecoder\u0060, \u0060arrayLongDecoder\u0060, \u0060arrayFloatDecoder\u0060, \u0060arrayDoubleDecoder\u0060, \u0060arrayDateDecoder\u0060, \u0060arrayLocalDateDecoder\u0060, \u0060arrayUuidDecoder\u0060. Counted over its ABSTRACT members \u2014 a \u0060def\u0060 with no body or a \u0060val\u0060/\u0060var\u0060 with no initializer, once per signature; concrete members, private and protected members, and members of a companion \u0060object\u0060 are not counted, because no implementer is forced to write them. A wide interface forces every implementer and caller to depend on methods they don\u0027t use (the Interface-Segregation \u0027I\u0027 in SOLID). Split it into focused role-interfaces."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/generic/ArrayEncoding.scala"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2981d2820291c03e3efd65a261305f0c7e8b28a3bbca2047ddf8da52933f39e"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 body is \u0060???\u0060: \u0060like\u0060 is a shipped member whose whole body is still \u0060???\u0060, and nothing in the repository overrides it \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/Dsl.scala"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b878e2a4434cf31b062fbe057ec86e5e039124c0f5375857d5fa602102c948"}},{"ruleId":"IC1","level":"warning","message":{"text":"Unfinished stub \u2014 body is ??? / NotImplementedError: \u0060like\u0060 is a shipped method whose whole body is \u0060???\u0060 (or throws NotImplementedError), and nothing in the repository overrides it \u2014 scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/Dsl.scala"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0fb12eb01f979e6595ec94c413be384bd0dfb4d35fe3074005c957225223350"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/h2/PeopleZioReturningSpec.scala"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4ac42c6b8673cc68aeb9d1189740dc0a76b96e247fd639870bdd86fc607b169"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/h2/PeopleZioReturningSpec.scala"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c596ee4dfb8cf59ce836beca48b4ec6d440a12365a0a45bf8d50d3b50d9dfc4"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/h2/PeopleZioReturningSpec.scala"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac047e3080b4e36e9b110bebb707ba0e0ca7a65960d6373a5446c5c0070e8c90"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/mysql/PeopleZioReturningSpec.scala"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"234e112bf1ca87226ab539644204002edf6d869ba5837efedd1d38c3083f0f6d"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/mysql/PeopleZioReturningSpec.scala"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c56ba98cb48583776b1a4ba88444a10e31b0787636e4ecf08edf19623bbe95d"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/oracle/PeopleZioReturningSpec.scala"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd5ff911d2427e96d74053f78fa480bd75f46757cbc26ecad7e63280b5c95617"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/oracle/PeopleZioReturningSpec.scala"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3135850ced33920a7f961e47a0bcbeea370ccfd216a52159d0c75eb2ac4881"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/oracle/PeopleZioReturningSpec.scala"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"95666c18853a4942283fd3b33d105b257ee5559737426305eb1556314f50091c"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/sqlite/PeopleZioReturningSpec.scala"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"59aba116adbde857ad8f937f694d3222b651b57b9baf6f390993243030c199a8"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/sqlite/PeopleZioReturningSpec.scala"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b9bd02c1f6dbeb95d4423ddec28d108aedef1c06d6f65bd90bc01122cf3485"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc-zio/src/test/scala/io/getquill/sqlserver/PeopleZioReturningSpec.scala"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d987e1aa4528ef69908e4f4d940c308be1f7d5e6628f21c873931edadf114c"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/h2/PeopleJdbcReturningSpec.scala"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"c740dce2bf45c7c0a181c2a7275d9e04685109a2b5f8f92e850945b504f14f50"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/h2/PeopleJdbcReturningSpec.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1486a4094b7127315ecfd08c37985937a4e51a29ab950f2e220f4f2f84d7cf4"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/mysql/PeopleJdbcReturningSpec.scala"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd00271b1cce4a087e4cc9050b6dac352c82fb948f2df9e3dc272aac673adbc6"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/mysql/PeopleJdbcReturningSpec.scala"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd08d5290fdc21fbb229699d0756eefc37ebb1f59d0d9b2bce147b66d15166a5"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/mysql/PeopleJdbcReturningSpec.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"65bf005f1a14ccdd53f53f93b377586936a31a42d9aaf689500c287d369b8a64"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/oracle/JdbcContextSpec.scala"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"45f1ce8fd4387c74b014068f31c2cb4fc11defe6d0cb7caba404512e968bd655"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/oracle/PeopleJdbcReturningSpec.scala"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f8be1f5f94a3eb52fc523474d20fa37c6cc0ab2fd3fb69b6ab7f8a85e79e45"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/oracle/PeopleJdbcReturningSpec.scala"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"c573cd020336b5669a6c1800cb4be6c7777cbf02423576d8dba2d07e2c0b50ce"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/oracle/PeopleJdbcReturningSpec.scala"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"54234390d9a61899f3f5fa077b53d5c61365537e5cd0e4494632d6ef80cd9989"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/sqlite/PeopleJdbcReturningSpec.scala"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"083929482e96f27dc9686097fb17d77494f3a0d4666f0df0332e7cf8ca71ca34"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/sqlite/PeopleJdbcReturningSpec.scala"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"f45a28f67f3c7a719a87d85dad4016ad435c88fc013c7f3fcec3873c37231205"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/sqlite/PeopleJdbcReturningSpec.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"d071f2974baddc671cc5b21d22de32276c9c5db0061dbd94c7de3db80173a4cc"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-jdbc/src/test/scala/io/getquill/context/jdbc/sqlserver/PeopleJdbcReturningSpec.scala"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"21df86c2f8258be07e06a8f401cacb9cc8a5e10d58c7fe1db1979efce4e279e8"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql-tests/src/test/scala/io/getquill/ported/sqlidiomspec/QuerySpec.scala"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cae3b5ece659c2c346e20bd543af92b4c65c6ffb54a7ef002b01606586b7004"}},{"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":"M4","level":"note","message":{"text":"README/code drift: build/m1/README.MD links to \u0060../../CONTRIBUTING.md\u0060, but \u0060CONTRIBUTING.md\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"build/m1/README.MD"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad9643011d4711bed6e00c637366e16dd91c9945c40c6f34a25ae073f63e337"}},{"ruleId":"P3","level":"note","message":{"text":"No SAST: No static application security testing detected. For this repository\u0027s stack, add scalafix or scapegoat (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 12434 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":"P4","level":"note","message":{"text":"No rollback/health safety: Deployment is orchestrated by compose, but no service declares a \u0060healthcheck:\u0060 and nothing pins a previous image to fall back to \u2014 the runtime can tell that the container is up, not that it is serving, so a bad release is harder to detect and reverse."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"db6bab8a28a2145f47e5a4e6683cda39d2ba0296c723238e8057da979ae1c706"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060m.name == fieldName \u0026\u0026 m.paramSymss == List()\u0060 appears character-identically in 2 files \u2014 quill-sql/src/main/scala/io/getquill/generic/DeconstructElaboratedEntityLevels.scala, quill-sql/src/main/scala/io/getquill/generic/TupleMember.scala. 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":"quill-sql/src/main/scala/io/getquill/generic/DeconstructElaboratedEntityLevels.scala"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea8573bf0b80dab9ed5caa81df90ed1884c0cfe95638f679f781fc2bd285431"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060primariesFound.length == primaries.length \u0026\u0026 secondariesFound.length == secondaries.length\u0060 appears character-identically in 2 files \u2014 quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala, quill-sql/src/main/scala/io/getquill/context/StaticTranslationMacro.scala. 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":"quill-sql/src/main/scala/io/getquill/context/QueryExecution.scala"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"2183dd52c0b091dc2121e0f04ecbe656019fb7e0533edc4672c0bf6b3c38c77e"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060tpe.classSymbol.exists(_.flags.is(Flags.Case)) \u0026\u0026 !constructor.paramSymss.exists(_.exists(_.isTypeParam))\u0060 appears character-identically in 2 files \u2014 quill-sql/src/main/scala/io/getquill/generic/ConstructType.scala, quill-sql/src/main/scala/io/getquill/generic/GenericDecoder.scala. 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":"quill-sql/src/main/scala/io/getquill/generic/ConstructType.scala"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da8e6b15fcd8d35a152488cc6078f355138c59a4e731088d5a8efdaaaf3a078"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (caught, then discarded): \u0060case e\u0060 takes every exception and records none of it \u2014 the body neither logs it, rethrows it, nor even names it, so the failure is discarded as completely as by an empty catch and only the substituted value survives. Log it through whatever this codebase already uses to report problems, narrow the catch to the exception this call can actually raise, or say in a comment on the catch why the failure genuinely cannot matter."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"quill-sql/src/main/scala/io/getquill/quat/QuatMaking.scala"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb95555e662b726cda87127b5aece442a7f768a853e37b500316127cd8149422"}},{"ruleId":"X5","level":"note","message":{"text":"Scala\u0027s null is not held to the type system everywhere: No build over this repository\u0027s 186 Scala product file(s) passes \u0060-Yexplicit-nulls\u0060, enables WartRemover\u0027s \u0060Null\u0060 wart or runs Scalafix\u0027s \u0060DisableSyntax.noNulls\u0060, so every reference type admits null and nothing reports a \u0060null\u0060 written into the code or returned from a Java API \u2014 the first one to reach a method call is a \u0060NullPointerException\u0060. \u0060Option\u0060 by convention is a habit no tool here holds the code to."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"23e7c3c6da50151f07723c64ca4f881fd5903e713d143161a7c0594ad7ba29cc"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1104","guid":"4c918cb5-b2a6-6c55-9963-a44ee464305e","name":"Use of Unmaintained Third Party Components","shortDescription":{"text":"Use of Unmaintained Third Party Components"},"helpUri":"https://cwe.mitre.org/data/definitions/1104.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-250","guid":"52ee12e8-390a-7351-b1e6-388afa694e54","name":"CWE-250","shortDescription":{"text":"CWE-250"},"helpUri":"https://cwe.mitre.org/data/definitions/250.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-269","guid":"70e1f5f6-81e5-4e5a-ba40-b541c3a346e2","name":"Improper Privilege Management","shortDescription":{"text":"Improper Privilege Management"},"helpUri":"https://cwe.mitre.org/data/definitions/269.html"},{"id":"CWE-345","guid":"d80d4b65-bbbe-b65d-958e-7ac466af18f9","name":"Insufficient Verification of Data Authenticity","shortDescription":{"text":"Insufficient Verification of Data Authenticity"},"helpUri":"https://cwe.mitre.org/data/definitions/345.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"Missing Support for Integrity Check","shortDescription":{"text":"Missing Support for Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"Embedded Malicious Code","shortDescription":{"text":"Embedded Malicious Code"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-522","guid":"71fb233e-ce6a-ae57-9419-ef8373540b09","name":"Insufficiently Protected Credentials","shortDescription":{"text":"Insufficiently Protected Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/522.html"},{"id":"CWE-552","guid":"3492436b-eca2-9c54-9ba3-5dade427c903","name":"Files or Directories Accessible to External Parties","shortDescription":{"text":"Files or Directories Accessible to External Parties"},"helpUri":"https://cwe.mitre.org/data/definitions/552.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-754","guid":"d9239381-f467-405a-862b-02e65c819273","name":"Improper Check for Unusual or Exceptional Conditions","shortDescription":{"text":"Improper Check for Unusual or Exceptional Conditions"},"helpUri":"https://cwe.mitre.org/data/definitions/754.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)","shortDescription":{"text":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"},"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":"Inclusion of Functionality from Untrusted Control Sphere","shortDescription":{"text":"Inclusion of Functionality from Untrusted Control Sphere"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Improper Control of Generation of Code (\u0027Code Injection\u0027)","shortDescription":{"text":"Improper Control of Generation of Code (\u0027Code Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]},{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61","version":"2025","organization":"OWASP Foundation","informationUri":"https://top10.owasp.org/2025/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10:2025 web application security risks."},"taxa":[{"id":"A02:2025","guid":"668dee9e-41bc-6354-97d0-fdf8f40c50c1","name":"Security Misconfiguration","shortDescription":{"text":"Security Misconfiguration"},"helpUri":"https://top10.owasp.org/2025/A02_2025-Security_Misconfiguration/"},{"id":"A03:2025","guid":"168e227c-7735-2e57-bc6e-997affe644c5","name":"Software Supply Chain Failures","shortDescription":{"text":"Software Supply Chain Failures"},"helpUri":"https://top10.owasp.org/2025/A03_2025-Software_Supply_Chain_Failures/"},{"id":"A05:2025","guid":"87e86033-3231-8458-8e4a-5cb82743553a","name":"Injection","shortDescription":{"text":"Injection"},"helpUri":"https://top10.owasp.org/2025/A05_2025-Injection/"},{"id":"A06:2025","guid":"491554d7-b8e4-9652-91a9-53700dc92ece","name":"Insecure Design","shortDescription":{"text":"Insecure Design"},"helpUri":"https://top10.owasp.org/2025/A06_2025-Insecure_Design/"},{"id":"A07:2025","guid":"334ddd78-539d-d35c-83dd-253647eb7eaf","name":"Authentication Failures","shortDescription":{"text":"Authentication Failures"},"helpUri":"https://top10.owasp.org/2025/A07_2025-Authentication_Failures/"},{"id":"A08:2025","guid":"84b0c297-710e-9a5f-9335-936ecb260c36","name":"Software or Data Integrity Failures","shortDescription":{"text":"Software or Data Integrity Failures"},"helpUri":"https://top10.owasp.org/2025/A08_2025-Software_or_Data_Integrity_Failures/"},{"id":"A10:2025","guid":"9ca3ab55-ca61-fd5e-b9ab-3dad2efa59d0","name":"Mishandling of Exceptional Conditions","shortDescription":{"text":"Mishandling of Exceptional Conditions"},"helpUri":"https://top10.owasp.org/2025/A10_2025-Mishandling_of_Exceptional_Conditions/"}]},{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35","organization":"OWASP Foundation","informationUri":"https://owasp.org/www-project-top-10-ci-cd-security-risks/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10 CI/CD Security Risks."},"taxa":[{"id":"CICD-SEC-4","guid":"c859d8ea-8b24-a157-9406-94929c10397a","name":"Poisoned Pipeline Execution (PPE)","shortDescription":{"text":"Poisoned Pipeline Execution (PPE)"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-04-Poisoned-Pipeline-Execution"},{"id":"CICD-SEC-5","guid":"cc7f4610-8859-e654-9029-d5f97d992220","name":"Insufficient PBAC (Pipeline-Based Access Controls)","shortDescription":{"text":"Insufficient PBAC (Pipeline-Based Access Controls)"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-05-Insufficient-PBAC"},{"id":"CICD-SEC-6","guid":"f2ee2486-b260-2952-a41f-6b67fa713940","name":"Insufficient Credential Hygiene","shortDescription":{"text":"Insufficient Credential Hygiene"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-06-Insufficient-Credential-Hygiene"},{"id":"CICD-SEC-8","guid":"b6b2dacf-a168-4957-876e-a8c73ee00eb0","name":"Ungoverned Usage of 3rd Party Services","shortDescription":{"text":"Ungoverned Usage of 3rd Party Services"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-08-Ungoverned-Usage-of-3rd-Party-Services"},{"id":"CICD-SEC-9","guid":"b3d36727-0395-5b51-94c4-5e173d62eab3","name":"Improper Artifact Integrity Validation","shortDescription":{"text":"Improper Artifact Integrity Validation"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-09-Improper-Artifact-Integrity-Validation"}]}],"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":63,"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."]}]}