{"$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":"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":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D11","name":"Test Reliability","shortDescription":{"text":"Test Reliability"},"helpUri":"https://codehealth.canine.dev/dimensions/D11"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D23","name":"Boundary Type-Coupling","shortDescription":{"text":"Boundary Type-Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D23"},{"id":"D24","name":"Comment Value","shortDescription":{"text":"Comment Value"},"helpUri":"https://codehealth.canine.dev/dimensions/D24"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"]}},{"id":"D33","name":"JS/npm Dependency Vulnerabilities","shortDescription":{"text":"JS/npm Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D33","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"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":"D38","name":"OSV Dependency Vulnerabilities","shortDescription":{"text":"OSV Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D38","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D39","name":"IL Efficiency","shortDescription":{"text":"IL Efficiency"},"helpUri":"https://codehealth.canine.dev/dimensions/D39"}]}},"results":[{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): BasicPlatform.ProcessManager/RoleProcessManager.cs:42-62 | BasicPlatform.ProcessManager/UserProcessManager.cs:43-63 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060BasicPlatform.ProcessManager/RoleProcessManager.cs:42\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":"BasicPlatform.ProcessManager/RoleProcessManager.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"f67071d38186f8868b9f20703c8b20474a8b3dca19e813ad10afc93cc64e4798"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): BasicPlatform.AppService.FreeSql/Resources/ResourceRequestHandler.cs:108-121 | BasicPlatform.AppService.FreeSql/Resources/ResourceRequestHandler.cs:157-170 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060BasicPlatform.AppService.FreeSql/Resources/ResourceRequestHandler.cs:108\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":"BasicPlatform.AppService.FreeSql/Resources/ResourceRequestHandler.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c839f39efa52115aa97229c53ff9f66cb08ef3bf8318d70a40ceb478bf77e4ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): BasicPlatform.AppService.FreeSql/Organizations/OrganizationQueryService.cs:141-152 | BasicPlatform.AppService.FreeSql/Users/UserQueryService.cs:344-355 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060BasicPlatform.AppService.FreeSql/Organizations/OrganizationQueryService.cs:141\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":"BasicPlatform.AppService.FreeSql/Organizations/OrganizationQueryService.cs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"045c5afaefd298310c44f2a6aa926075d4bf8c5d192d38c33a67990387cb3dce"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Domain \u2192 Infrastructure: BasicPlatform.Domain (Domain) references BasicPlatform.Infrastructure (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1aa616947837a504c3cb1c305bb2f377ca21a06b23901e128ac91fb58e6c12cc"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Domain \u2192 Infrastructure: CRM.Domain (Domain) references App.Infrastructure (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"59f16b4b2e6300fdbba733c470b75782857a681efd937ee1ec67e3ffa9004f87"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BasicPlatform.Infrastructure: BasicPlatform.Infrastructure: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 6 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2e9c9c2f96df60cfb48cf7f621808afe63e645498508bad3ae8b29856c9a97c"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: CMS.Domain: CMS.Domain: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 4 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c35478403cb2692ce4567278185511305dcc28a85f8330362408e5e62ce99fba"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: CRM.Domain: CRM.Domain: abstractness 0.00, instability 0.13, distance 0.88 \u2014 zone of pain \u2014 concrete and depended on by 7 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cb4b47b81971756444931ccf2932c5ac080f3634a301396fde1329c4921adaf1"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BasicPlatform.Domain: BasicPlatform.Domain: abstractness 0.00, instability 0.17, distance 0.83 \u2014 zone of pain \u2014 concrete and depended on by 5 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"002a286125f04de2342f8204c7f005381eee603f70c1dddcff54ddceb7da286e"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: App.Infrastructure: App.Infrastructure: abstractness 0.22, instability 0.00, distance 0.78 \u2014 zone of pain \u2014 concrete and depended on by 8 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"88d33b7973d85de08cdf5f17bf211da77252b09729011f126df0bd1ee27f88ed"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: WebSettingQueryService.cs: 0.0% line coverage (0/6)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/WebSettings/WebSettingQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6fa5906577dca7a6865f2ad19033abc893b87d10ed2469a2bcf106ab3519ef"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: WebSettingRequestHandler.cs: 0.0% line coverage (0/28)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/WebSettings/WebSettingRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a91b15f2129b38c94f889eebcc4fd4121ce3c96e7900518d319efe116d6dd57"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: UserQueryService.cs: 0.0% line coverage (0/509)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Users/UserQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb767aa74f57c23585066b5d934369d719fe5c4a00c49235c38ff6c9c8231c70"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: UserRequestHandler.cs: 0.0% line coverage (0/215)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Users/UserRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c837e2625651735a29ba5eceec6cb5baf249b383e9540e596fb4446763801aa"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: TenantQueryService.cs: 0.0% line coverage (0/129)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Tenants/TenantQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c92831b4147bd4650d4aa9a722b58018c6edb4ad7f178375c0fa18ae9d3eedc"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: TenantRequestHandler.cs: 0.0% line coverage (0/103)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Tenants/TenantRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1021146b0597de4b8241d61c5deb185db3071cf2112b91d3b01e1ab6aba90ff3"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: RoleQueryService.cs: 1.6% line coverage (2/128)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Roles/RoleQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"194474f5e267946c65f48e1bbb447098131d706569f16973616290c63bfa6a18"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: RoleRequestHandler.cs: 0.0% line coverage (0/119)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Roles/RoleRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4768e34f4b84565e323eb165894daf1c2bfbf8a9173902b31f1d37863e48bcf1"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: ResourceRequestHandler.cs: 0.0% line coverage (0/124)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Resources/ResourceRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"209bc936508395c04467e6761c4c24756304616c3fbc9205a097a37614ecb289"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: PositionQueryService.cs: 0.0% line coverage (0/46)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Positions/PositionQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a473ddd0bf011d051a8342663176c62f315c50ac699335e63dec417ab4068763"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: PositionRequestHandler.cs: 0.0% line coverage (0/27)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Positions/PositionRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"321b5ffb03848676a393de32dfbf438c6cd98fd720d2ece005a014ba834f7c2b"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: OrganizationQueryService.cs: 0.6% line coverage (1/172)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Organizations/OrganizationQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee5d77e4c65d1afefdc8e5a15f30c879e29c3cb83a93aedb89443224a07f74e"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: OrganizationRequestHandler.cs: 0.0% line coverage (0/72)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Organizations/OrganizationRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"049d2beac9d62c535008177cf7dd9777ebedbb6e7f0f9db4aba10193810b7181"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: ExternalPageQueryService.cs: 0.0% line coverage (0/65)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/ExternalPages/ExternalPageQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb85da3909405ba08e3c9963d796f4c25927e4b93669472a7154ce81b9c8c80"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: ExternalPageRequestHandler.cs: 0.0% line coverage (0/89)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/ExternalPages/ExternalPageRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e8235b1a786e31f175f8ffc322695c1e8887fb5f0b3a653febf840bbec3d594"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: CommonService.cs: 0.0% line coverage (0/58)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Commons/CommonService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bc32e2a1bfaf2161283d2f938dba0312e480198416b27a47ccc69e2b52eb179"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: DefaultColumnPermissionService.cs: 0.0% line coverage (0/69)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Commons/DefaultColumnPermissionService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f25aec5e702412ca3042e3adc8487b2b958617de3603e3e48b42f2f0474503"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: DefaultDataPermissionService.cs: 0.0% line coverage (0/182)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Commons/DefaultDataPermissionService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c759f5094b88978d266495e60119edd917d6ea48fd46fbc0a810df8ee9dc29e4"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: TenantService.cs: 0.0% line coverage (0/22)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Commons/TenantService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d6072f026ddb2e399e58f903a8bfeb4355f7959c6fe0b1a1ad4aaeacf03c7c"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: ApplicationQueryService.cs: 1.2% line coverage (1/86)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Applications/ApplicationQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d7dd6761cf15f106645324b3bcfa5476f7e9c190791ddcfeb6f1b4458664d1b"}},{"ruleId":"D8","level":"warning","message":{"text":"Low coverage: ApplicationRequestHandler.cs: 0.0% line coverage (0/57)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Applications/ApplicationRequestHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"21cf65f6d095c5710f3a5a5587f995712126d7e9d9a85701dbcfdd62ea1c1eea"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 380: ResourceRequestHandler.Handle: Cyclomatic 19 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Resources/ResourceRequestHandler.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57bdde7c52b93abc7c079e9309be44680b74414891080bd41e589ae5a9b8b1f"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 132: UserQueryService.GetByUserNameAsync: Cyclomatic 11 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Users/UserQueryService.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c2f01720994489f1bd39923e79400188123a08ea54be71179145097885302d"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 110: ExternalPageRequestHandler.Handle: Cyclomatic 10 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/ExternalPages/ExternalPageRequestHandler.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ecdeb90786f67db0f639089eb9beda6740fdb08ce282af363852a03d3da23f6"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 90: UserQueryService.GetPagingAsync: Cyclomatic 9 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Users/UserQueryService.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"356d85d28fbe4f81e50e41ba3806d0699143420ca9d4223b7feed9dce1fcb978"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 56: ExternalPageRequestHandler.Handle: Cyclomatic 7 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/ExternalPages/ExternalPageRequestHandler.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dbbb116fda79e1067e18107191dbff77e17ec38aedc8f13c9568668580e5d64"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 56: UserQueryService.GetTreeChildren: Cyclomatic 7 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Users/UserQueryService.cs"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65a40f7e9a7545d9a293fa4dbe6edeb6f3185531fb0b22e011b0f691e3178b3"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 42: DefaultDataPermissionService.GetUserDataScopesAsync: Cyclomatic 6 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Commons/DefaultDataPermissionService.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd76a1bae12613591e42217edb10e83684feb01593cd3a50230c17ce6249639d"}},{"ruleId":"D8","level":"warning","message":{"text":"CRAP 42: TenantQueryService.GetByCodeAsync: Cyclomatic 6 with 0.0% file coverage \u2014 too complex for how untested it is (CRAP = CC\u00B2\u00B7(1\u2212cov)\u00B3 \u002B CC; \u226530 needs tests or simplification)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Tenants/TenantQueryService.cs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"08992a36359ea35b8e54a0380d2226b9a612d0bbee1ae88340f9c10b0146001c"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Extensions.PlatformAbstractions: Microsoft.Extensions.PlatformAbstractions 1.1.0 \u2014 Other,Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0cc1b2b0a5695419242719002399b4f3416667fb6f128b2ec614252a00cc7998"}},{"ruleId":"D12","level":"warning","message":{"text":"Prerelease dependency: Athena.All.FreeSql: Athena.All.FreeSql resolves to 7.0.4-preview.20231218.2, a prerelease build. Prerelease packages carry no support policy, may change breaking between previews and can be unlisted \u2014 pin a stable release before shipping, or record the reason this preview is required."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1a0136e8402cddae2ed3859d01c23f4f081bccb2c9a290d57d34e49d37f07b7d"}},{"ruleId":"D12","level":"warning","message":{"text":"Prerelease dependency: Athena.Infrastructure.FreeSql.OTel: Athena.Infrastructure.FreeSql.OTel resolves to 7.0.0-preview.20231101.2, a prerelease build. Prerelease packages carry no support policy, may change breaking between previews and can be unlisted \u2014 pin a stable release before shipping, or record the reason this preview is required."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"39d8bec8ae421078551f9bdd99489c812f26835a5aafbcf8877623ccde2d95dc"}},{"ruleId":"D16","level":"warning","message":{"text":"single-maintainer \u2014 knowledge-concentration (bus factor) risk: single-maintainer \u2014 knowledge-concentration (bus factor) risk (1 author(s) across 160 commit(s) sampled)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b4b49d961df742f0e507f4cc5c8094fb077ba0391a27fd015d18320865187719"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 15 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Applications/ApplicationQueryService.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"62066fbfe9aee185da1c2813c9342683824d435d7ae5c100f3be9437cf1bb1ac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService/Users/Models/UserDataPermissionModel.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8f8e8e452a720148d7931bc4cfedbc6d8ab2e9544937043f1bbb91c95b61ea"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService/Users/Requests/DeleteUserRequest.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"2224a76851e8a13fef6280834320b9db7bb567ad2adb46d37f6812788d492a6d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService/Users/Requests/DeleteUserRequest.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7887700f40d3343ed06f1f06d63389713eb93d649135a6bbe6460bf179c3de5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService/Users/Requests/DeleteUserRequest.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cba1c459cfaa3da1f3ae38e3b6fd2c48bab4f6bc580dda0972928fc6bc8a4e0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.Domain/Models/Users/User.cs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4dd7271108dfbd183d2caf73775e0329a0421272d976ce97c7d18e28131f397"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.WebAPI/Controllers/AccountController.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"e90ec593c702c920d982826c567be1d6b858155662925d20b2fa5f33d26f367a"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found at common paths; consider documenting architectural decisions in Docs/ADL/ or similar."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D21","level":"note","message":{"text":"The root namespace for user-related domain models is inconsistent. Most user entities reside in \u0060BasicPlatform.Domain.Models.Users\u0060, but some (like \u0060UserAppointment\u0060, \u0060UserAccessRecord\u0060, \u0060UserCustomColumn\u0060) are nested directly under \u0060BasicPlatform.Domain.Models.Users\u0060 or use a flat structure without a subfolder/model grouping, while events are in \u0060Events\u0060. This creates a mixed structure where some concepts are grouped by entity type and others are not.: Ensure all user-related domain models are consistently grouped under \u0060BasicPlatform.Domain.Models.Users\u0060 with a clear subfolder or naming convention (e.g., \u0060BasicPlatform.Domain.Models.Users.User\u0060 vs \u0060BasicPlatform.Domain.Models.Users.Appointment\u0060). (symbols: BasicPlatform.Domain.Models.Users.User, BasicPlatform.Domain.Models.Users.UserAppointment, BasicPlatform.Domain.Models.Users.UserAccessRecord, BasicPlatform.Domain.Models.Users.UserCustomColumn, BasicPlatform.Domain.Models.Users.UserDataPermission, BasicPlatform.Domain.Models.Users.UserResource, BasicPlatform.Domain.Models.Users.Events.UserUpdatedEvent, BasicPlatform.Domain.Models.Users.Events.UserBasicUpdatedEvent, BasicPlatform.Domain.Models.Users.Events.UserColumnPermissionAssignedEvent, BasicPlatform.Domain.Models.Users.Events.UserDataPermissionAssignedEvent, BasicPlatform.Domain.Models.Users.Events.UserCreatedEvent)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"027dbbb54b8ccf23944c025171d4eaaf84d0e3d47c84034231c5ab1c28af48b7"}},{"ruleId":"D21","level":"note","message":{"text":"There is an inconsistency in the naming of query models versus regular models. Some modules use the \u0060*QueryModel\u0060 suffix for DTOs used in queries (e.g., \u0060UserQueryModel\u0060), while others use \u0060*Model\u0060 (e.g., \u0060TenantModel\u0060, \u0060ApplicationModel\u0060). This creates confusion about whether a specific model is for querying or general use.: Standardize on \u0060*QueryModel\u0060 for all DTOs used in query requests/responses, or clearly distinguish between \u0060*Model\u0060 (general) and \u0060*QueryModel\u0060 (specific to queries). (symbols: BasicPlatform.AppService.Users.Models.UserQueryModel, BasicPlatform.AppService.Tenants.Models.TenantQueryModel, BasicPlatform.AppService.Applications.Models.ApplicationQueryModel, BasicPlatform.AppService.Organizations.Models.OrganizationQueryModel, BasicPlatform.AppService.Positions.Models.PositionQueryModel, BasicPlatform.AppService.Users.Models.UserModel, BasicPlatform.AppService.Tenants.Models.TenantModel, BasicPlatform.AppService.Applications.Models.ApplicationModel, BasicPlatform.AppService.Organizations.Models.OrganizationModel, BasicPlatform.AppService.Positions.Models.PositionModel)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"68d843b3c4c3ba32ce1508d71e7ea43b9bc79a246483c16528a42c0b9c309943"}},{"ruleId":"D21","level":"note","message":{"text":"The CRM module uses \u0060Customer\u0060 as the primary entity name, while the rest of the \u0060BasicPlatform\u0060 module uses \u0060User\u0060 or \u0060Account\u0060 for similar concepts. Additionally, \u0060CRM.Domain.Customers.Customer\u0060 is a direct entity, but \u0060CRM.Domain.Customers.Events.CustomerCreatedEvent\u0060 is an event. The inconsistency lies in the root namespace \u0060CRM\u0060 vs \u0060BasicPlatform\u0060 and the entity naming (\u0060Customer\u0060 vs \u0060User\u0060).: Align the CRM module\u0027s entity naming with the rest of the platform (e.g., \u0060User\u0060 or \u0060Account\u0060), or ensure the \u0060CRM\u0060 namespace is clearly separated and consistently named. (symbols: CRM.Domain.Customers.Events.CustomerCreatedEvent, CRM.Domain.Customers.Customer, CRM.Domain.Customers.Events.CustomerCreatedEvent.CreatedUserId)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dbeb8f7da2fb70d1566f4e9ede98d12793fc1d2b1368e8e53e2e5820d5615881"}},{"ruleId":"D21","level":"note","message":{"text":"There are two different interfaces for user querying: \u0060IUserQueryService\u0060 in \u0060BasicPlatform.AppService.Users\u0060 and \u0060IUserService\u0060 in \u0060App.Infrastructure.Services\u0060. They seem to perform similar operations (e.g., \u0060GetUserCustomColumnsAsync\u0060), leading to potential confusion about which service to use.: Consolidate user querying logic into a single \u0060IUserQueryService\u0060 or \u0060IUserService\u0060 interface to avoid duplication and confusion. (symbols: BasicPlatform.AppService.Users.IUserQueryService, BasicPlatform.AppService.Users.IUserQueryService.GetUserCustomColumnsAsync, BasicPlatform.AppService.Users.IUserQueryService.GetUserResourceAsync, App.Infrastructure.Services.IUserService.GetUserCustomColumnsAsync, App.Infrastructure.Services.IUserService.GetUserResourceCodesAsync)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a4f68af06064e01a066d3f0e64f970cf64a116cc5f1f71c417c5771a7cef452a"}},{"ruleId":"D21","level":"note","message":{"text":"The \u0060IRoleQueryService\u0060 contains both query methods (\u0060GetAsync\u0060, \u0060GetSelectListAsync\u0060) and permission-related methods (\u0060GetDataPermissionsAsync\u0060, \u0060GetRoleIdsByUserIdAsync\u0060). This mixes general role queries with specific permission queries, which may be better separated.: Separate role queries from permission queries into distinct interfaces or services to improve cohesion. (symbols: BasicPlatform.AppService.Roles.IRoleQueryService, BasicPlatform.AppService.Roles.IRoleQueryService.GetRoleIdsByUserIdAsync, BasicPlatform.AppService.Roles.IRoleQueryService.GetSelectListAsync, BasicPlatform.AppService.Roles.IRoleQueryService.GetAsync, BasicPlatform.AppService.Roles.IRoleQueryService.GetDataPermissionsAsync)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"26224e65faaa314c8bb7362c4fb483f0dd97de388893798e707141b242cc89a6"}},{"ruleId":"D23","level":"note","message":{"text":"Bounded contexts not declared: At 17k LoC across 23 projects the codebase is large and multi-module, so explicit bounded contexts are needed. Name this codebase\u0027s bounded contexts (\u22652 module groups, e.g. per subsystem) so cross-boundary type coupling can be assessed. Declare them in \u0060.codehealth/config.yaml\u0060 at the repository root (create it if absent), mapping each context name to the module-path or namespace prefixes that belong to it \u2014 e.g. \u0060architecture:\u0060 \u2192 \u0060contexts:\u0060 \u2192 \u0060Billing: [\u0022src/billing\u0022, \u0022Acme.Billing\u0022]\u0060, \u0060Catalog: [\u0022src/catalog\u0022, \u0022Acme.Catalog\u0022]\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1c7e276c9c682731f01819ed5378b90ca320cde1b583c90920172911598362b3"}},{"ruleId":"D24","level":"note","message":{"text":"redundant comment: \u0022\u8BFB\u53D6\u7528\u6237\u7684\u89D2\u8272\u5217\u6743\u9650\u0022 \u2014 trim - the column-permissions comment already states this"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Commons/DefaultColumnPermissionService.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"09bd53822b38e140d543b2e3051b14317e92a0851ccfc2b65e3997338b246139"}},{"ruleId":"D24","level":"note","message":{"text":"redundant comment: \u0022\u003Csummary\u003E\u0022 \u2014 delete - XML/annotation marker, not explanatory text"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService/Users/Models/UserDataPermissionModel.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2a7ebb757284e1e9890222722996370b3891bd41521900a00e35127a3eaf281"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9b435d1821681567ec219ab81dd7b33f4d5b5d264feba2e83b1ffff752e4079e"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b115f74c3f3532bb71f8a60c9d02ec9da049b20e34eade64f9ae4cdd9aa7c216"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4e4448b31e8b4dd1a6489e264df38146de5afb770ee8e6556d999f07ae5800a8"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1f79a595d62add568feda19f54d04fdad0273f072ae213a4e4ad714127a8a2fe"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"84751b0f575da4b94e3e57be8e8cae7a514ee01700a99e287c13e927bad802c8"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7cf85abffe732f2645ef95a624d6badc26f0263616284d6a4cc46ca8e983031d"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b96b7173c4377d5bea4d6fd7b52323631c631c44172b743bec6f266c10a4e538"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6f8734055dde61c36a91287855fd314611209845cc1fd9ba1f3c48397db2d085"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a445afe8b6e857b9fd222b80f44c2c55273b9f2d8af8366742aa5d0b7b2cffa3"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e92ef47a93ca21416350b56c62426eaba052eb41d0e7c047d55f55bb678a833c"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0912468502895fef4191cf23b29c5d522839d785a26e658050b8cfe283b341f2"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3ba6adecf20687c87a0f3448ccba2cd457b3698c3116bf5f56d9e5eea46f5ca5"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f2298334374a8ad552bf08dd33c123201fb6d055ca950accf76ab4281db4fbe5"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"96d2e222b15a2675ae14fe4991677dac5a06ed1833a7c724e5f7f4b4f56ac7cb"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d26c9073983da55831cbdc5bcf49b78c2d182de4fd4cdc50785ae04fd364918d"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"168a243d8f9c760a448d54bcea747ca496cc7f877a812d091ddc3b63ed7ea471"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1ff1b7ecec536d348c6340298e1b7fb843f16c7ea3dced015533fa5f52c75c68"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9145fea524050227c21c95e0e6acb68804fd23f92bebcb6fcaadca8e6f053686"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2e2a93cf9f9ccc2cf5e54c431a9407e7897917b5e869bf094a4b3e3b99189a77"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"36d494f8a3c7732bf95b42158e69965a70a4ed74851c04ffbb137e96e4828b66"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4b2bd951a19d05837741ccbd5962891413a0cddde778106f197c0621365c5ec8"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7134239b5641c3572e687dfdb1ce0a5113e0425f0f85cb8493e41d0448b996e5"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c9362b6701f21f959637117bd96caa6718bea18b2fd3c9f332d61a000a138299"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7df1cd90f26f64cc43b5795297e80a3cdb7c291b81180c3077fe95cebbb59421"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"91dcea3b3b1125448fa3a01083f78c03e76fbd5ad6feb0873ca273d105cb0ee1"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dcd22fe5ff51245dbdf9bfccd1c85031d38ca47d2809a05d73895953fa060463"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"89d94b4ef8829889724cd87ef56f27cb13a3300c2c81dfcdf626b4e8f84a1e4b"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8fdbf37a4fa83dedbe98a394e00ef48b5954cb57ee2d77ec3c501c0e3deb638a"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"26764093a7735374c2f49ca042e911fcb0f544d4aa6d1aeb679b0676aee985cf"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a43f356f209f16263da60cc6aa75071f60dbe6f79320f7f71d8bd32f42015138"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"211d24385a760b9cb1b347d4d32f0f650dd2b0c188d79e6f19886086714d16e0"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8e3ae842552cd7900f03136d8069bcacf2a67a331c9557f29fdbabd51c626de2"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5cde224c60ac6b6c9776daa3a231d4df79fafa4e50b1a36b48a747489ea1ca3b"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0d9eec6fa3579d9bfbc2acea0c4ea50af890d1da3d401368bce67e90fc79514a"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6263a56fe3a70af87a269967837af0dd5b722c97091869d8433487b538f5d47f"}},{"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":"bf7d37e7eb9300a83cf513ef8598c7ccaf02a3e18d499a6224780a72b2772f5a"}},{"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":"72c0cb49c7b52007f0071cdb070c2cbb325d38f721d11966f7d093e320a5a301"}},{"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":"2d9ba1692f840ccf9558589cc3161c2907cdfa3d2edb19d508cf6dd69106921f"}},{"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":"ecb2e4500edbb7a5c960747890352d85c10d41660d8929108b1e7404794a5a08"}},{"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":"d29f5e53c775df58a80be26355415c8af1959820293d98f304429e64678dd984"}},{"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":"f790e14e011b31af95f9ece989e794c5843d32a09d89b8e9d47637c83c2727d2"}},{"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":"34b030e94b3fa5d71065101f63c8b33a7467c994792f73194e7dfb6a4ddfe3cb"}},{"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":"48c263113d4ba29e78176da0863cd033ef1885bc073fbe3ffa59c5cb048f0829"}},{"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":"343b21420e15b3081c6de5159ffdd6189eeb074f7b2f2a1dc169acb94bd59ba6"}},{"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":"65249f626f3bb059d6b951b93944b4bb5e347444266cec7c91bc3bee69a89bb6"}},{"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":"a9f3f565b94f155127179a02930f29cffccbdc13948709fbc4870a1e6682bb0a"}},{"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":"12522e5c4e1eca9e12b5d0e11a8b592af46db31daa5bcbef00cac7293f67ae04"}},{"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":"37c3910245a8360759b2bd46db8d000fb8b64aa1260e8e8a7e2c7b36fd586aec"}},{"ruleId":"D34","level":"note","message":{"text":"Dormant codebase: 66 of 66 significant files have no living knowledge \u2014 the codebase as a whole is dormant, not 66 separate risks. Re-engage owners or document before change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c69f1e54b7dd6fe9029dd02df6ba8f8145b789f2f18dbdaa086c40ded49dba6"}},{"ruleId":"D34","level":"note","message":{"text":"Largest orphaned file: One of the largest files with no living knowledge remaining \u2014 a reasonable place to start a read-through before the aggregate risk above bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Users/UserQueryService.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fdcabefa09348f1679a5898453131eba7bc49256da94daf7467eb229309b115"}},{"ruleId":"D38","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":"c2c50e5171aad30589e2bbe51118379e54fd3c995967b2683e4bcb2d533235f2"}},{"ruleId":"D38","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":"df7527397ba4b01fd202b6f544a1e51014183f91f8470b10dccf7b7d43418c88"}},{"ruleId":"D38","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":"36a1024f2ef785429a2dbf2e6ccca59f8dbbd134e720c20a804309cf20b6d12e"}},{"ruleId":"D38","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":"32be7815163c4691832f649ae54c7099324b89671509b4beb05c2a720d83d249"}},{"ruleId":"D38","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":"bbd14779e81fdbeccb94e603e7de926150f90cc391c620d12126b3f62c595262"}},{"ruleId":"D38","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":"71ed222ff26dd229087997dbff23d3918da0225875814f1d83e46f633c9d9c94"}},{"ruleId":"D38","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":"d8c54c153e9974d8a4daa990153b93efb7c5356ef33e11b66c64f4eabac1956a"}},{"ruleId":"D38","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":"ef5a46023aa599f3165d501423b0d0a1f9bc4db5641fc7f31bc2752a4ab682b0"}},{"ruleId":"D38","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":"4605e2dd8a637dc4b846ddfc6eef2e73f6214094a512aace248c67f6d97e3300"}},{"ruleId":"D38","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":"5ec9270aca4b4636158651e21170caaea1280a7e56b03d43833c9266a9bf32f8"}},{"ruleId":"D38","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":"03325762f41ed98115f5b525761ca8c1cdc730a34ecae4fa8582d4d407cec36a"}},{"ruleId":"D38","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":"df587d9534cfb93ed7aae06eb8fd2e0c5922773b23eeaaa057407a0a3f234f4f"}},{"ruleId":"D38","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":"b54c173ba3c6e5e9f84b4ce75daa0391bfea04ab9504be345f5b15ad72b3bb52"}},{"ruleId":"D38","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":"fc895f4b0a5e36039d9085c6dc7fa1c71353cf95092ad64f1196bfb685cb33ed"}},{"ruleId":"D38","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":"778ef6c7d5e469339e1d6bd458d3462b4f58ba1d3a6dc9b827dece77640b65cb"}},{"ruleId":"D38","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":"ee74460082aca095a23a13ab3f86fd335fe592b2b38b28b64dc7132e0bf90f44"}},{"ruleId":"D38","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":"cdea526a15b2d6bbe7c396fbb62386c7db8122e1c6d57b3956959c476829ea8c"}},{"ruleId":"D38","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":"0dc5744a990011c8bb9361ea4b0c156b13183e0a9c4a240f401e1b561a0e004e"}},{"ruleId":"D38","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":"fcf37c8172db0f4a07d5591b8f8604a982c8e9e8b8cf8cf1999d722324fb9547"}},{"ruleId":"D38","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":"dee164aadde7b420bfba5f3ba1a702112305be850d2102260f4bd2dee8b3e624"}},{"ruleId":"D38","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":"9b877ef75bb1c4d1d64f69421726e4f5197586965d82c80a2e887990daa94335"}},{"ruleId":"D38","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":"376b040722dd96dc74de8f4f2b3ce952b5a605a18e57d100c2bb6e9f66f9d2c3"}},{"ruleId":"D38","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":"4d8f1f03b0a5b9877317ca28493c73ed9ddcfca2ddef26ebefc8fd1c049af3ca"}},{"ruleId":"D38","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":"30b3a6c001beb8cf08bcc62eedbec6c664d26d4cfd56e1c2b1110a8bcec81bb3"}},{"ruleId":"D38","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":"079a1eada2c6bea3da92c5319671ec8308d1b28aa7cf5dbb6955dee9e09212f8"}},{"ruleId":"D38","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":"76f3cbe64298f724c9c3e96e1441a0f022885c07a50d8e4c6ed0b64bb107f71a"}},{"ruleId":"D38","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":"f845c3fb5593a04c506a6fdcf6f33866512fee688c7ce0975e343a2b79ba2db7"}},{"ruleId":"D38","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":"8a32046ae653907e34f1c62f5baf48ba747b1c2826940ad07d81019d35ff2803"}},{"ruleId":"D38","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":"f7921791a583bb6164331193685d26e5296cffa2e60152c2aa1089a06d2dd00f"}},{"ruleId":"D38","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":"f5b689563653ff375d9089f5b1672676ea62a870c023c4805d3b936309ac79fc"}},{"ruleId":"D38","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":"3b6fa74c4ef8405ac292ab36d542445b07bfd2db016faaf62da5746144f5b65d"}},{"ruleId":"D38","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":"6542cfbd7fe8776dec9842236ebe5f803bf73c777f420ea34d21f76127ce1b23"}},{"ruleId":"D38","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":"9f5cf2dba243a109ce4a40af78a17dee0e1ce481df413077ac7457fbab3cf624"}},{"ruleId":"D38","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":"75a39663dfa86523b242d773d742295c0ca50129c45742230d8863d23f1c6e1d"}},{"ruleId":"D38","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":"9fd4a1ad0b281c83101b7af063662b084d689ee80b79502c398441960278d37c"}},{"ruleId":"D38","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":"5ca44ade88d7ca9aa4c7b0b23a4ed07c80f16e60bf614d8a3185baf40a2e827d"}},{"ruleId":"D38","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":"310eaf4a418b07012b3f87bfded98908b822d10edea9c9cd9cd338422df39600"}},{"ruleId":"D38","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":"89028ee41cc1fc196c8a274beebc451f1ab6310d3e60f3383a42225718a022d5"}},{"ruleId":"D38","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":"0ada8898befba39b009c5951dce317f95f44067cf9037477f1076d17a053c645"}},{"ruleId":"D38","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":"5c36815e741fdf07753510150866569225dfab8e524d6a26e01fc4b856487d86"}},{"ruleId":"D38","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":"619cd4242e99ea91ce6fb7cdb3ed4a83bb1c2195eaeba16639e3bb2d297761f3"}},{"ruleId":"D38","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":"eed3687d9ac4d879607735930b493ebf84b53d9e3ba73948b2a39a35e5eabcc4"}},{"ruleId":"D38","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":"a454081f39c777047e12bbb204f9b4239bfa625919cd001c51cad2cd064bc223"}},{"ruleId":"D38","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":"de6fdc9decdae79115be184903698d79c315ada2bf1aaa880bcac0998138cb3c"}},{"ruleId":"D38","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":"416ad3796b3b69ea99aff77d9f93cf0fdafe35d6ee7e5bed40b4323a8b2d9485"}},{"ruleId":"D38","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":"4310676fe3d581b05dfdd0895e7684c4049cad5917ba4b179db493144ea64408"}},{"ruleId":"D38","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":"a8fe732957ce7311d654f630e81a4968cc6b54276147d9d513e231f24a1337b7"}},{"ruleId":"D38","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":"9664f8ec4e1520d24986d1dcd905921771db7e5487d062e7ced861195e4197dc"}},{"ruleId":"D38","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":"9aca2cea99932b6b54ab369343a8a4f0672c32b4b58de03e8185a4079ce575e2"}},{"ruleId":"D38","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":"18c462673b23609a2b09539e697dd477704b652d446a3b802f34f4debae578f6"}},{"ruleId":"D39","level":"note","message":{"text":"IL efficiency: 1 authored method(s) exceed the IL budget: 1 of 694 first-party methods compile to oversized IL bodies (\u003E 250 instructions); worst: BasicPlatform.AppService.FreeSql.Tenants.TenantQueryService.GetAsync @ BasicPlatform.AppService.FreeSql/Tenants/TenantQueryService.cs:186, 265 IL instructions; large bodies don\u0027t JIT-inline, which pulled this dimension to 10.0/10; splitting the hottest bodies recovers the most."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"BasicPlatform.AppService.FreeSql/Tenants/TenantQueryService.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"58188342b667599db44e6d2a3c5c025ddb3d8c831a17194146666ea5c68b5706"}}],"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-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":99,"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."]}]}