{"$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":"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":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"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":"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":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"]}},{"id":"D44","name":"Platform End-of-Life","shortDescription":{"text":"Platform End-of-Life"},"helpUri":"https://codehealth.canine.dev/dimensions/D44"},{"id":"AC1","name":"Text alternatives","shortDescription":{"text":"Text alternatives"},"helpUri":"https://codehealth.canine.dev/dimensions/AC1"},{"id":"AC2","name":"Forms \u0026 labels","shortDescription":{"text":"Forms \u0026 labels"},"helpUri":"https://codehealth.canine.dev/dimensions/AC2"},{"id":"AC3","name":"Page structure","shortDescription":{"text":"Page structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AC3"},{"id":"AC4","name":"Keyboard semantics","shortDescription":{"text":"Keyboard semantics"},"helpUri":"https://codehealth.canine.dev/dimensions/AC4"},{"id":"AC5","name":"ARIA correctness","shortDescription":{"text":"ARIA correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/AC5"},{"id":"AC6","name":"Visual \u0026 motion safety","shortDescription":{"text":"Visual \u0026 motion safety"},"helpUri":"https://codehealth.canine.dev/dimensions/AC6"},{"id":"AC7","name":"A11y enforcement","shortDescription":{"text":"A11y enforcement"},"helpUri":"https://codehealth.canine.dev/dimensions/AC7"},{"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":"AXB2","name":"Runtime readiness","shortDescription":{"text":"Runtime readiness"},"helpUri":"https://codehealth.canine.dev/dimensions/AXB2"},{"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":"P7","name":"Outbound HTTP resilience","shortDescription":{"text":"Outbound HTTP resilience"},"helpUri":"https://codehealth.canine.dev/dimensions/P7"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"R1","name":"Type Safety","shortDescription":{"text":"Type Safety"},"helpUri":"https://codehealth.canine.dev/dimensions/R1"},{"id":"R10","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/R10"},{"id":"R11","name":"Import Boundaries","shortDescription":{"text":"Import Boundaries"},"helpUri":"https://codehealth.canine.dev/dimensions/R11"},{"id":"R2","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/R2"},{"id":"R3","name":"Large Files","shortDescription":{"text":"Large Files"},"helpUri":"https://codehealth.canine.dev/dimensions/R3"},{"id":"R4","name":"Test Coverage","shortDescription":{"text":"Test Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/R4"},{"id":"R6","name":"Tooling","shortDescription":{"text":"Tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/R6"},{"id":"R7","name":"Dead Code","shortDescription":{"text":"Dead Code"},"helpUri":"https://codehealth.canine.dev/dimensions/R7"},{"id":"R8","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/R8"},{"id":"R9","name":"Circular Imports","shortDescription":{"text":"Circular Imports"},"helpUri":"https://codehealth.canine.dev/dimensions/R9"},{"id":"SC1","name":"Supply-chain hygiene","shortDescription":{"text":"Supply-chain hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/SC1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"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":"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":"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":"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":"ChatPanel.ChatPanel (cyclomatic 114): ChatPanel.ChatPanel has cyclomatic complexity 114 (threshold 15). Most of this is not in the body itself: 14 of the 114 points are its own statements and the rest belongs to 19 function literals inside it that branch (lines 297, 953, 923, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ChatPanel.tsx"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"d44b96630f4679474f6a801acd94ba3d0814bd6ecd024aad4416a738042f9e73"}},{"ruleId":"D1","level":"warning","message":{"text":"BillboardCollection.BillboardCollection.update (cyclomatic 109): BillboardCollection.BillboardCollection.update has cyclomatic complexity 109 (threshold 15). Of this number, 108 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":1569}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae11d488d96b1375ca03c655859689658adc3bed9707ccd4fa8f5fec05c995f1"}},{"ruleId":"D1","level":"warning","message":{"text":"addDrawCommandsForTile (cyclomatic 107): addDrawCommandsForTile has cyclomatic complexity 107 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":2510}}}],"partialFingerprints":{"codehealthFindingId/v1":"087f8accc4f9eed8b63f727fa21e7cbd35222928a0ea29d54342150cf139b3c4"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderState (cyclomatic 96): RenderState has cyclomatic complexity 96 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c43d22cb8ecfe28fa32efb0c368ec33e9e6d0f1f9ad5a5c5ae3c68929c2a5c2"}},{"ruleId":"D1","level":"warning","message":{"text":"Expression.Node.getShaderExpression (cyclomatic 90): Expression.Node.getShaderExpression has cyclomatic complexity 90 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1906}}}],"partialFingerprints":{"codehealthFindingId/v1":"08f8ca23f9a67b03f4848aa165d079e1eca0cb738932d5a8c9aa78a01884161a"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobeSurfaceShaderSet.getShaderProgram (cyclomatic 84): GlobeSurfaceShaderSet.getShaderProgram has cyclomatic complexity 84 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceShaderSet.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ab7a1167783e7de687e3a53494c177ea525989d01708648432677bc9bd697d5"}},{"ruleId":"D1","level":"warning","message":{"text":"buildVectorGltfFromMVT.buildVectorGltfFromMVT (cyclomatic 84): buildVectorGltfFromMVT.buildVectorGltfFromMVT has cyclomatic complexity 84 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/buildVectorGltfFromMVT.js"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b5c1ba166fb572110493dd2e54d2671a93214bdd0472dd6ca790498f8a6980"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 75): update has cyclomatic complexity 75 (threshold 15). Of this number, 57 points are the body\u0027s own statements and 18 belong to 7 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GaussianSplatPrimitive.js"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef41c067d303246ee549b0a10ea113c5c2e6d0dbdc877a7b5f73456b85bdb418"}},{"ruleId":"D1","level":"warning","message":{"text":"Viewer (cyclomatic 75): Viewer has cyclomatic complexity 75 (threshold 15). Of this number, 66 points are the body\u0027s own statements and 9 belong to 6 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19dc0091923ed6803e88db2096863b0e2b3cf9cc6a4a6288980cac53413d2ef"}},{"ruleId":"D1","level":"warning","message":{"text":"PolygonGeometry.computeAttributes (cyclomatic 73): PolygonGeometry.computeAttributes has cyclomatic complexity 73 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"33737455552ec995839d268f0e7c3c3349f9813efefd602d94269e0b51cbc60f"}},{"ruleId":"D1","level":"warning","message":{"text":"JulianDate.fromIso8601 (cyclomatic 69): JulianDate.fromIso8601 has cyclomatic complexity 69 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/JulianDate.js"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"e99b0ef984747300874cebb0cedaabbd636f5875493f78db21cd69a371f0891e"}},{"ruleId":"D1","level":"warning","message":{"text":"EllipsoidGeometry.EllipsoidGeometry.createGeometry (cyclomatic 69): EllipsoidGeometry.EllipsoidGeometry.createGeometry has cyclomatic complexity 69 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipsoidGeometry.js"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"214f7d45f0c3f4dbf7631f944269a56792ac85b87c932113303c6470af4c307a"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTileset (cyclomatic 68): Cesium3DTileset has cyclomatic complexity 68 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"25aa5b2d2938d1d07c5b0c530d04105e21acff0359f42f929a16011ddee925f9"}},{"ruleId":"D1","level":"warning","message":{"text":"PointPrimitiveCollection.PointPrimitiveCollection.update (cyclomatic 64): PointPrimitiveCollection.PointPrimitiveCollection.update has cyclomatic complexity 64 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointPrimitiveCollection.js"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3ebb9ef382fb8e8cffa5ef8e4ae0167daf56ef105d4b3f85f33d5bbce4c9719"}},{"ruleId":"D1","level":"warning","message":{"text":"PointCloud.createShaders (cyclomatic 64): PointCloud.createShaders has cyclomatic complexity 64 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1a741dcf2b336daaca87ad7bb3c382aa7454a6bf880cb23180e79a0bdda2fb"}},{"ruleId":"D1","level":"warning","message":{"text":"ChatMessage.ChatMessage (cyclomatic 64): ChatMessage.ChatMessage has cyclomatic complexity 64 (threshold 15). Of this number, 51 points are the body\u0027s own statements and 13 belong to 6 function literals inside it that branch. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ChatMessage.tsx"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"60247df4840345594660b1443770006e34f48c570cf3524411d2747d9ef9742d"}},{"ruleId":"D1","level":"warning","message":{"text":"RectangleGeometry.constructExtrudedRectangle (cyclomatic 60): RectangleGeometry.constructExtrudedRectangle has cyclomatic complexity 60 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5138bdf3184a452e044ab1a12fa305c5055e859c1a81ed4470bcced36090c48"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTilesInspectorViewModel.Cesium3DTilesInspectorViewModel (cyclomatic 58): Cesium3DTilesInspectorViewModel.Cesium3DTilesInspectorViewModel has cyclomatic complexity 58 (threshold 15). Most of this is not in the body itself: 2 of the 58 points are its own statements and the rest belongs to 34 function literals inside it that branch (lines 398, 838, 862, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspectorViewModel.js"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7e0dd29eaf8d9f011a366dd74d6c57dd15499858f298e884990495532267ef"}},{"ruleId":"D1","level":"warning","message":{"text":"App.App (cyclomatic 57): App.App has cyclomatic complexity 57 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 39 belong to 20 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"47ebbc2911def4d2bc2cc5bb46b1df32ffa6147d6c68e39b09cece405c4040ed"}},{"ruleId":"D1","level":"warning","message":{"text":"createElevationBandMaterial.createLayeredEntries (cyclomatic 56): createElevationBandMaterial.createLayeredEntries has cyclomatic complexity 56 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/createElevationBandMaterial.js"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"736bc9f52e64fe3774a3e4e12e0f0f7ba8eb77a2333a41c4223459ffcd462c11"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 54): update has cyclomatic complexity 54 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelEllipsoidShape.js"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"34fdc3b707d67c6172f11319474fdbc7e14055d83ab61b2df9df797d86c650a1"}},{"ruleId":"D1","level":"warning","message":{"text":"useToolChainExecution.useToolChainExecution (cyclomatic 53): useToolChainExecution.useToolChainExecution has cyclomatic complexity 53 (threshold 15). Most of this is not in the body itself: 1 of the 53 points is its own statement and the rest belongs to 8 function literals inside it that branch (lines 170, 110, 77, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8759902b27738950327fe66f03f9c008eadb45de5372970434e2152364c452c"}},{"ruleId":"D1","level":"warning","message":{"text":"Texture (cyclomatic 53): Texture has cyclomatic complexity 53 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"12f1a5c1df1dae0b246cf810f0954fe41b8f1fd9ddac868ddd6b12a5868852f3"}},{"ruleId":"D1","level":"warning","message":{"text":"unwrapInterval (cyclomatic 51): unwrapInterval has cyclomatic complexity 51 (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":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f3a1793040643fecd20bcd65a1184b5966acc63b99484bbba2eff549acc647a"}},{"ruleId":"D1","level":"warning","message":{"text":"handleZoom (cyclomatic 51): handleZoom has cyclomatic complexity 51 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"684acb3d6602b0b122f3c0a6829f32fadb240724a465b7732a2822a5b4b37da5"}},{"ruleId":"D1","level":"warning","message":{"text":"HeightmapTessellator.HeightmapTessellator.computeVertices (cyclomatic 50): HeightmapTessellator.HeightmapTessellator.computeVertices has cyclomatic complexity 50 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/HeightmapTessellator.js"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"0beeb443db404d8582c0528a672549793614a4999ffbe0300f53f362b9b04c29"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.executeCommands (cyclomatic 50): Scene.executeCommands has cyclomatic complexity 50 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":2779}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6537796f51736c5f01f736690da2e16da459d21c2e433946ae4b6d6ba52326"}},{"ruleId":"D1","level":"warning","message":{"text":"Expression.setEvaluateFunction (cyclomatic 48): Expression.setEvaluateFunction has cyclomatic complexity 48 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b9d442e3f676422d69d17c7ac22bee0d62748d69a60e572bfc35097144f8506"}},{"ruleId":"D1","level":"warning","message":{"text":"Model (cyclomatic 48): Model has cyclomatic complexity 48 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"6563c582ea499475e27ff93a5a28309e6577bea193c322a1f100621d804f58d1"}},{"ruleId":"D1","level":"warning","message":{"text":"renderBufferPolylineCollection.renderBufferPolylineCollection (cyclomatic 45): renderBufferPolylineCollection.renderBufferPolylineCollection has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolylineCollection.js"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba505a871abee322cb358283e3e5eb5129c5d18d83248a203f53751271168f83"}},{"ruleId":"D1","level":"warning","message":{"text":"Expression.parseCall (cyclomatic 45): Expression.parseCall has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde3c33a3e9a70e497ce462fbf887144e83f7f8863672de922b1a7fc8a14ce82"}},{"ruleId":"D1","level":"warning","message":{"text":"EdgeVisibilityPipelineStage.createQuadEdgeGeometry (cyclomatic 44): EdgeVisibilityPipelineStage.createQuadEdgeGeometry has cyclomatic complexity 44 (threshold 15). Of this number, 43 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ad173cc4997fcdcef9ae489f7e11032b499fcd38b354a071cea2893515a1ef"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageryLayer.ImageryLayer._createTileImagerySkeletons (cyclomatic 44): ImageryLayer.ImageryLayer._createTileImagerySkeletons has cyclomatic complexity 44 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayer.js"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"f41ea349a6cae962a7c4a9db318d359b54b9c02cb19db9839ff95b2f1dec451f"}},{"ruleId":"D1","level":"warning","message":{"text":"PathVisualizer.PolylineUpdater.updateObject (cyclomatic 44): PathVisualizer.PolylineUpdater.updateObject has cyclomatic complexity 44 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"211cc887cf9db764eb9f2b1c871026d7fb3b8a95dc583a4c4218fd8772c5c334"}},{"ruleId":"D1","level":"warning","message":{"text":"CesiumWidget (cyclomatic 44): CesiumWidget has cyclomatic complexity 44 (threshold 15). Of this number, 42 points are the body\u0027s own statements and 2 belong to 4 function items inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"3037488d71c3b097d0e02db9f67b0d6ef19a63274d2c73ad208c8296385af708"}},{"ruleId":"D1","level":"warning","message":{"text":"CesiumViewer.main (cyclomatic 43): CesiumViewer.main has cyclomatic complexity 43 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Apps/CesiumViewer/CesiumViewer.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ab03a473ef08eb3b5d132b997567eb7665353662f64324d5ec6193bd7b8bf17"}},{"ruleId":"D1","level":"warning","message":{"text":"EllipsoidOutlineGeometry.EllipsoidOutlineGeometry.createGeometry (cyclomatic 42): EllipsoidOutlineGeometry.EllipsoidOutlineGeometry.createGeometry has cyclomatic complexity 42 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipsoidOutlineGeometry.js"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a8e2dba2168d9f444a66fa2a60a5f1503d1a3866b7e2f429191c50a51b36a26"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.updateAndClearFramebuffers (cyclomatic 42): Scene.updateAndClearFramebuffers has cyclomatic complexity 42 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3963}}}],"partialFingerprints":{"codehealthFindingId/v1":"309d8b9542fb57c6bc31b664f6dd2414683d64132aa4d9a31c9ed1c4e965e6f9"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 42): update has cyclomatic complexity 42 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":2083}}}],"partialFingerprints":{"codehealthFindingId/v1":"80cccf7d82a205616aafeb58aee4d4e2620e2e7e79e5d5627adf48aa7f0c0fe8"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 42): update has cyclomatic complexity 42 (threshold 15). Of this number, 39 points are the body\u0027s own statements and 3 belong to 7 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClassificationPrimitive.js"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd41c42bebc61eb4cebffc27518e70c4e5a0a01c37687e50b6a4aaa3426924ca"}},{"ruleId":"D1","level":"warning","message":{"text":"EllipseGeometry.computeTopBottomAttributes (cyclomatic 40): EllipseGeometry.computeTopBottomAttributes has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a5255963216ee8ba351188b907cf789b125df75ec8749e5e7af36856c78781"}},{"ruleId":"D1","level":"warning","message":{"text":"CylinderGeometry.CylinderGeometry.createGeometry (cyclomatic 40): CylinderGeometry.CylinderGeometry.createGeometry has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CylinderGeometry.js"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"326f069ba906fe94a0bb3959b11e89b23e1e79f66c8c5b39321fcd010ec27c72"}},{"ruleId":"D1","level":"warning","message":{"text":"EdgeVisibilityPipelineStage.extractVisibleEdges (cyclomatic 40): EdgeVisibilityPipelineStage.extractVisibleEdges has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"b94d81f2eadaf1c65861efc665db29b79c932e7842ef8904983f3205d5dac2fa"}},{"ruleId":"D1","level":"warning","message":{"text":"TerrainFillMesh.propagateEdge (cyclomatic 40): TerrainFillMesh.propagateEdge has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1cac970696ef9047ee8d270c7bbb7ff339c3e33f8534e03a61228a60588f387"}},{"ruleId":"D1","level":"warning","message":{"text":"upsampleQuantizedTerrainMesh.upsampleQuantizedTerrainMesh (cyclomatic 40): upsampleQuantizedTerrainMesh.upsampleQuantizedTerrainMesh has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/upsampleQuantizedTerrainMesh.js"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20111149f2ca90d0a4d3fb0cb1be75ef15953aab462b15eefa0cc7631b64c8b"}},{"ruleId":"D1","level":"warning","message":{"text":"addAttribute (cyclomatic 40): addAttribute has cyclomatic complexity 40 (threshold 15). Of this number, 38 points are the body\u0027s own statements and 2 belong to 7 function items inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"0340a5a56925fccd16f346623773d3f99bc1a3532f39d67764453a63d018ac81"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 40): update has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EllipsoidGeometryUpdater.js"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"5459c18ff5d0ed80b3b9f915c2fd9eb0717ee2a9c05fb2a8013c983024d5a2e1"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineGeometry.PolylineGeometry.createGeometry (cyclomatic 39): PolylineGeometry.PolylineGeometry.createGeometry has cyclomatic complexity 39 (threshold 15). Of this number, 37 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineGeometry.js"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"43fd9654f750ca04552a5f2f1035981e24085cc36e40022084b7fdcc4c0dc286"}},{"ruleId":"D1","level":"warning","message":{"text":"CesiumTerrainProvider.parseMetadataSuccess (cyclomatic 39): CesiumTerrainProvider.parseMetadataSuccess has cyclomatic complexity 39 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"273a136768f6e59766a7452d3e4c657edcf1ead728e7b6175f22e992fb436145"}},{"ruleId":"D1","level":"warning","message":{"text":"renderBufferPolygonCollection.renderBufferPolygonCollection (cyclomatic 39): renderBufferPolygonCollection.renderBufferPolygonCollection has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolygonCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccadefad63fc0ec61069a6ffe13c659d4a28e4951fbe4b5cbdb10c0e73f25933"}},{"ruleId":"D1","level":"warning","message":{"text":"TimeIntervalCollection.TimeIntervalCollection.addInterval (cyclomatic 38): TimeIntervalCollection.TimeIntervalCollection.addInterval has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd47ca3f78dc44c42db56e3f51911c8dfd039ed07f5d9788eb38a052233e19db"}},{"ruleId":"D1","level":"warning","message":{"text":"renderBufferPointCollection.renderBufferPointCollection (cyclomatic 38): renderBufferPointCollection.renderBufferPointCollection has cyclomatic complexity 38 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPointCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a8fc6af6185a0d2ed9476e4ea6e87c2b0cb92afe90772caf05fe90c10b47211"}},{"ruleId":"D1","level":"warning","message":{"text":"CzmlDataSource.getPropertyType (cyclomatic 38): CzmlDataSource.getPropertyType has cyclomatic complexity 38 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"8323194dd9755ce4227cc278fd73b0b37938c0378bcedf6561201fcaf22bcabe"}},{"ruleId":"D1","level":"warning","message":{"text":"EllipsoidPrimitive.EllipsoidPrimitive.update (cyclomatic 38): EllipsoidPrimitive.EllipsoidPrimitive.update has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/EllipsoidPrimitive.js"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"0083817951017adf064c4c963bb772a5e1337d3e8c6395c0675fd4644034ac35"}},{"ruleId":"D1","level":"warning","message":{"text":"AnthropicClient.processSSEStream (cyclomatic 38): AnthropicClient.processSSEStream has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/AnthropicClient.ts"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"520b3445c4aa61c737427477a371e6bab49b89fbf3aeebab237ab52bfdc3547b"}},{"ruleId":"D1","level":"warning","message":{"text":"VertexAIClient.processClaudeSSEStream (cyclomatic 38): VertexAIClient.processClaudeSSEStream has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b16de39d5eb9f936a4f37dec8c6e16b1e0d5f85befdb7b1df09a8042097d782"}},{"ruleId":"D1","level":"warning","message":{"text":"processProperty (cyclomatic 38): processProperty has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e7b54717f8fc406b431f998368823f79cf45b11f839907f248d7c00fa23244b"}},{"ruleId":"D1","level":"warning","message":{"text":"processPositionProperty (cyclomatic 38): processPositionProperty has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"865361ffbf6bcb8c01ee2a3dd40eb6a55c3a44d38ab41e9921b44bf4cb155452"}},{"ruleId":"D1","level":"warning","message":{"text":"buildGallery.buildGalleryList (cyclomatic 37): buildGallery.buildGalleryList has cyclomatic complexity 37 (threshold 15). Of this number, 36 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/scripts/buildGallery.js"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e66fcb40729d7517aa5980c4eef9ccb07efd0496e87087a1cf830770d34c87f"}},{"ruleId":"D1","level":"warning","message":{"text":"Geometry3DTileContent.getBatchIds (cyclomatic 37): Geometry3DTileContent.getBatchIds has cyclomatic complexity 37 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Geometry3DTileContent.js"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c84f3788b1e884cf9c0d272088e9e84926017b941faf5df3150e4362e2bf8e"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticGeometryColorBatch.Batch.update (cyclomatic 37): StaticGeometryColorBatch.Batch.update has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryColorBatch.js"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3f79c5f98b4cb66e8cfe7b3ac9b9358bbeb1c2df79e64ccd0e892019bcd5a7"}},{"ruleId":"D1","level":"warning","message":{"text":"AnimationViewModel.AnimationViewModel (cyclomatic 37): AnimationViewModel.AnimationViewModel has cyclomatic complexity 37 (threshold 15). Most of this is not in the body itself: 4 of the 37 points are its own statements and the rest belongs to 12 function literals inside it that branch (lines 238, 198, 168, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/AnimationViewModel.js"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5af359d6eda7b06f030b76bf4f59d782726e50ecf234e385f0f22ebce7c8b9"}},{"ruleId":"D1","level":"warning","message":{"text":"QuadtreePrimitive.visitTile (cyclomatic 36): QuadtreePrimitive.visitTile has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbfd59787ec6d94c4a108af649f76b4cd62e26d7d51d7e581f8a7347deac76e"}},{"ruleId":"D1","level":"warning","message":{"text":"Timeline.Timeline._makeTics (cyclomatic 36): Timeline.Timeline._makeTics has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/Timeline.js"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e3c6bc64b7c9d6c92bd6d4b9cb030796ced339c97d054811b2e6e4447e3b1c7"}},{"ruleId":"D1","level":"warning","message":{"text":"Texture3D (cyclomatic 36): Texture3D has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture3D.js"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"277788105ba5e3927ee325f885c7a00394467e86bcb540b47426a32d66b967de"}},{"ruleId":"D1","level":"warning","message":{"text":"EntityCluster.createDeclutterCallback (cyclomatic 35): EntityCluster.createDeclutterCallback has cyclomatic complexity 35 (threshold 15). Most of this is not in the body itself: 1 of the 35 points is its own statement and the rest belongs to one function literal inside it that branches (line 226). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityCluster.js"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"90014d394d01f0c92a77a59aeff0eef646c402ea225d5fc2543ccc7ef0abe693"}},{"ruleId":"D1","level":"warning","message":{"text":"transcodeKTX2.transcodeCompressed (cyclomatic 35): transcodeKTX2.transcodeCompressed has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/transcodeKTX2.js"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"920356cafdde6ab48e000364f4a4436ecbbde51db1f9d4109126dd5ca1ff6158"}},{"ruleId":"D1","level":"warning","message":{"text":"ParticleSystem (cyclomatic 35): ParticleSystem has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ParticleSystem.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"abdd601f65d3fb113d26fab49158b54300f36f33e51908489ff05f76e59feb0f"}},{"ruleId":"D1","level":"warning","message":{"text":"_onEntityPropertyChanged (cyclomatic 35): _onEntityPropertyChanged has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PolylineGeometryUpdater.js"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"daa3cb38f8c22cf994ab3a66f1489bc7f69dbb46f75c56eec73400fe8409d2c5"}},{"ruleId":"D1","level":"warning","message":{"text":"ModelRuntimePrimitive.ModelRuntimePrimitive.configurePipeline (cyclomatic 34): ModelRuntimePrimitive.ModelRuntimePrimitive.configurePipeline has cyclomatic complexity 34 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ec0f965bebbe487a0d534bb05cca6544dc7a59dc85b2814d9827b14672a6275"}},{"ruleId":"D1","level":"warning","message":{"text":"PathVisualizer.subSampleSampledProperty (cyclomatic 34): PathVisualizer.subSampleSampledProperty has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fe7a6a3cf4fec290b70c5ddbefd424d062e13a749c21b79f5705ea5b1869818"}},{"ruleId":"D1","level":"warning","message":{"text":"processNetworkLink (cyclomatic 34): processNetworkLink has cyclomatic complexity 34 (threshold 15). Most of this is not in the body itself: 13 of the 34 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 3077, 3195). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2998}}}],"partialFingerprints":{"codehealthFindingId/v1":"8de44876f51fe575bc35fd756bcedae4ed318f980119ad6d15323239168f542f"}},{"ruleId":"D1","level":"warning","message":{"text":"publish.publish (cyclomatic 33): publish.publish has cyclomatic complexity 33 (threshold 15). Most of this is not in the body itself: 9 of the 33 points are its own statements and the rest belongs to 7 function literals inside it that branch (lines 296, 467, 362, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tools/jsdoc/cesium_template/publish.js"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f1f67bf7dd4daf803f3516f1cc2d0caf6ad8b60d1cfa41e8e33a9dcc103d43a"}},{"ruleId":"D1","level":"warning","message":{"text":"Resource.Resource._Implementations.loadWithXhr (cyclomatic 33): Resource.Resource._Implementations.loadWithXhr has cyclomatic complexity 33 (threshold 15). Of this number, 24 points are the body\u0027s own statements and 9 belong to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":2099}}}],"partialFingerprints":{"codehealthFindingId/v1":"a519a2ded677f11d1acbc5d43574f53366011b705b6b43724935cbfca31a1a5a"}},{"ruleId":"D1","level":"warning","message":{"text":"Framebuffer.Framebuffer (cyclomatic 33): Framebuffer.Framebuffer has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Framebuffer.js"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b636582104007a1a2349e462f4e6ebb4d913a53793c2c73e388b4598c5c194f"}},{"ruleId":"D1","level":"warning","message":{"text":"ModelAnimationCollection.ModelAnimationCollection.update (cyclomatic 33): ModelAnimationCollection.ModelAnimationCollection.update has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelAnimationCollection.js"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d0571ba3639ed181d281364a70d4d5babb86735b893f6e34576b7b5174fa47"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineCollection.PolylineCollection.update (cyclomatic 33): PolylineCollection.PolylineCollection.update has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff668fcacfd414cccdbfc613ced33bbd653145754b49818355233290acb6a251"}},{"ruleId":"D1","level":"warning","message":{"text":"Camera.updateMembers (cyclomatic 33): Camera.updateMembers has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"54e8fb74b128139e0b0291d052e020eb592091c626074fbfae1e520c26a436e8"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.Scene.updateEnvironment (cyclomatic 33): Scene.Scene.updateEnvironment has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3719}}}],"partialFingerprints":{"codehealthFindingId/v1":"368b9873142c3d1a005d75a2b37d2f821b36c35d62754bf1886c8f04e2a459ca"}},{"ruleId":"D1","level":"warning","message":{"text":"TimeIntervalCollection.TimeIntervalCollection.removeInterval (cyclomatic 32): TimeIntervalCollection.TimeIntervalCollection.removeInterval has cyclomatic complexity 32 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"1456c3b9eb26a2e84f5fd6477942f201d59851305c46b0cf46fe3466f237881c"}},{"ruleId":"D1","level":"warning","message":{"text":"Vector3DTilePoints.Vector3DTilePoints.applyStyle (cyclomatic 32): Vector3DTilePoints.Vector3DTilePoints.applyStyle has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTilePoints.js"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb830d79abf87cbf5bd4dd7721ab77cf0df78a43126cc949d181a30edb0e737"}},{"ruleId":"D1","level":"warning","message":{"text":"VertexAIClient.geminiStreamRequest (cyclomatic 32): VertexAIClient.geminiStreamRequest has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"703374498afe1e842a65e6e8bdcd3a1cd06f0082f6003e205676bed68c00c74e"}},{"ruleId":"D1","level":"warning","message":{"text":"ApiKeyDialog.ApiKeyDialogBody (cyclomatic 32): ApiKeyDialog.ApiKeyDialogBody has cyclomatic complexity 32 (threshold 15). Most of this is not in the body itself: 11 of the 32 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 140, 90, 115, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ApiKeyDialog.tsx"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0d75610d192fbe8a68c17eb1a3ebdb38e55abfc837eab1fb605da636609a35"}},{"ruleId":"D1","level":"warning","message":{"text":"CesiumInspectorViewModel.CesiumInspectorViewModel (cyclomatic 32): CesiumInspectorViewModel.CesiumInspectorViewModel has cyclomatic complexity 32 (threshold 15). Of this number, 17 points are the body\u0027s own statements and 15 belong to 10 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/CesiumInspector/CesiumInspectorViewModel.js"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc421fe0b447d6278088da8f298c3c62869793a7d7728b9b51c9fa3be1da8f3"}},{"ruleId":"D1","level":"warning","message":{"text":"ShadowMap (cyclomatic 32): ShadowMap has cyclomatic complexity 32 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f39f0d6771c423b192df0b077969200e02311886a140f07f783d6cc84d56dfe"}},{"ruleId":"D1","level":"warning","message":{"text":"CorridorGeometry.combine (cyclomatic 31): CorridorGeometry.combine has cyclomatic complexity 31 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d78f53d4475ad016e9644672bbf87095f173ee3f4afefae5490fc97ecb2ce0"}},{"ruleId":"D1","level":"warning","message":{"text":"PixelFormat.PixelFormat.toInternalFormat (cyclomatic 31): PixelFormat.PixelFormat.toInternalFormat has cyclomatic complexity 31 (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":"packages/core/Source/PixelFormat.js"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"e12fd6794af732d79315297be69b06f0f778e61fd013c2ea7aa61744439d7ce9"}},{"ruleId":"D1","level":"warning","message":{"text":"RectangleGeometry.constructRectangle (cyclomatic 31): RectangleGeometry.constructRectangle has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"b76bd1925403ee9b69af04cb96aeeef592aa427bbcf6ee17e9d0c108f5f03a3e"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderState.createFuncs (cyclomatic 31): RenderState.createFuncs has cyclomatic complexity 31 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"af49e2e1e44fde25136af9af18c03d9392d2ed73c773a5d435fa02d43321d6e5"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineCollection.PolylineBucket.write (cyclomatic 31): PolylineCollection.PolylineBucket.write has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"e031088081e74817353a495333c8dd075935bd324b0cda9eec5670f6610aaa4d"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.executeCommand (cyclomatic 31): Scene.executeCommand has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":2276}}}],"partialFingerprints":{"codehealthFindingId/v1":"f58b42dc6a9f7a9be5f6449a43f483cf74488ad22931907da1357b209aa9f76a"}},{"ruleId":"D1","level":"warning","message":{"text":"decodeI3S.generateGltfBuffer (cyclomatic 31): decodeI3S.generateGltfBuffer has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d2c3c170add69186fb44f3245709711955fd0779c2f12e804bffa315a475d2"}},{"ruleId":"D1","level":"warning","message":{"text":"GalleryItemStore.useGalleryItemStore (cyclomatic 31): GalleryItemStore.useGalleryItemStore has cyclomatic complexity 31 (threshold 15). Most of this is not in the body itself: 1 of the 31 points is its own statement and the rest belongs to 12 function literals inside it that branch (lines 166, 108, 306, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Gallery/GalleryItemStore.ts"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"981492eefe60bd7950ce9f595f5a63af3d442d5b1a14de225bd9e32f32c75d80"}},{"ruleId":"D1","level":"warning","message":{"text":"Billboard (cyclomatic 31): Billboard has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Billboard.js"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"e26079b84edffc789a55f7878bfeb416527b3e5d6e9ff2641d3f3b03db8f5ffb"}},{"ruleId":"D1","level":"warning","message":{"text":"InvertClassification.InvertClassification.update (cyclomatic 30): InvertClassification.InvertClassification.update has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/InvertClassification.js"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"fce0a95c5193f97ac78a306772e079e969b1b4d96686795face91fca3df8b391"}},{"ruleId":"D1","level":"warning","message":{"text":"ShadowMapShader.ShadowMapShader.createShadowReceiveFragmentShader (cyclomatic 30): ShadowMapShader.ShadowMapShader.createShadowReceiveFragmentShader has cyclomatic complexity 30 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMapShader.js"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3219cd054d0e37a96efca435b8c6aaf6df5329eb0062c937c28964adf7da3ea"}},{"ruleId":"D1","level":"warning","message":{"text":"PostProcessStageCollection.PostProcessStageCollection.update (cyclomatic 30): PostProcessStageCollection.PostProcessStageCollection.update has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStageCollection.js"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"260d58be137322af4e6a99dc5f02f139cb77a3a68f942eb17af75bf58fb30ae4"}},{"ruleId":"D1","level":"warning","message":{"text":"TimeDynamicPointCloud.TimeDynamicPointCloud.update (cyclomatic 30): TimeDynamicPointCloud.TimeDynamicPointCloud.update has cyclomatic complexity 30 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TimeDynamicPointCloud.js"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ca911bca6807e6cf53e499c4626f26b29b096afc1d2f5b492f8914bb464f5cd"}},{"ruleId":"D1","level":"warning","message":{"text":"processScreenOverlay::onload (cyclomatic 30): processScreenOverlay::onload has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2499}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e0ba28374c1e27a1767fe66d696f5ca4874695eeba2356ed01dc9cfec05b787"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.GeometryPipeline.compressVertices (cyclomatic 29): GeometryPipeline.GeometryPipeline.compressVertices has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7a194103e2f101c1f8ce5ebb99c3f5e50247e3e29554b8a22cf6205488cb39"}},{"ruleId":"D1","level":"warning","message":{"text":"GroundPolylineGeometry.generateGeometryAttributes (cyclomatic 29): GroundPolylineGeometry.generateGeometryAttributes has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"a447a4f389846dc593131495274cb997110452da5c9e4fcc82d775155a40f7c6"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageBasedLighting.ImageBasedLighting.update (cyclomatic 29): ImageBasedLighting.ImageBasedLighting.update has cyclomatic complexity 29 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageBasedLighting.js"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff0de9b5b3feeb148fe4a90cb175515f8682ac0b9a255111ac9efb24f37c314b"}},{"ruleId":"D1","level":"warning","message":{"text":"FramebufferManager.FramebufferManager.destroy (cyclomatic 29): FramebufferManager.FramebufferManager.destroy has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/FramebufferManager.js"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"319cc0289b21bfc6755506a3ce4a2e9edae88e7f16fab6a4a3336fbe8422588b"}},{"ruleId":"D1","level":"warning","message":{"text":"TerrainFillMesh.visitRenderedTiles (cyclomatic 29): TerrainFillMesh.visitRenderedTiles has cyclomatic complexity 29 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"529e013ac7136784931c66e8c7f608f1b2c0d370313c81b632419ca92abcca18"}},{"ruleId":"D1","level":"warning","message":{"text":"createVerticesFromGoogleEarthEnterpriseBuffer.processBuffer (cyclomatic 29): createVerticesFromGoogleEarthEnterpriseBuffer.processBuffer has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2f326a31ace3993bbd2569e3a91bacd8f11f1ee1f9bcb94b738019123975d4"}},{"ruleId":"D1","level":"warning","message":{"text":"BaseLayerPickerViewModel.BaseLayerPickerViewModel (cyclomatic 29): BaseLayerPickerViewModel.BaseLayerPickerViewModel has cyclomatic complexity 29 (threshold 15). Most of this is not in the body itself: 2 of the 29 points are its own statements and the rest belongs to 7 function literals inside it that branch (lines 180, 136, 246, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/BaseLayerPicker/BaseLayerPickerViewModel.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"27f2d066344d9a82e6ab97e49e2b70eef8193799d4cae70d289367253441c726"}},{"ruleId":"D1","level":"warning","message":{"text":"Label (cyclomatic 29): Label has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b3f49577dacd7fb14f9adf96208a3497e314acded37f2925ed6ad82578fb65"}},{"ruleId":"D1","level":"warning","message":{"text":"Tipsify.Tipsify.tipsify (cyclomatic 28): Tipsify.Tipsify.tipsify has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Tipsify.js"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c0d68b2a1a953dc08bf0db15b84dc98bfec4c0561fd04171b4d2c883393d98"}},{"ruleId":"D1","level":"warning","message":{"text":"WallGeometry.WallGeometry.createGeometry (cyclomatic 28): WallGeometry.WallGeometry.createGeometry has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/WallGeometry.js"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"373d5b6eef665e9afe0b014c04c0128e7e59189f8be54b58a694d133031c8022"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineCollection.PolylineBucket.writeUpdate (cyclomatic 28): PolylineCollection.PolylineBucket.writeUpdate has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1807}}}],"partialFingerprints":{"codehealthFindingId/v1":"0184e9cdc63ffafaa61f79e8815e12c44c24bf113df48b53670c6aa419b2c50c"}},{"ruleId":"D1","level":"warning","message":{"text":"Vector3DTileContent.getBatchIds (cyclomatic 28): Vector3DTileContent.getBatchIds has cyclomatic complexity 28 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileContent.js"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"08fd55ded15ed320ea9f23757cb15c976e73fd7ff46c302dd057911da5ac287d"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTile.applyDebugSettings (cyclomatic 28): Cesium3DTile.applyDebugSettings has cyclomatic complexity 28 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":2157}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bcc7c0ddc7de83fea1e581c482aa54169dc2189ade567303554e0b60c8379ce"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticGeometryPerMaterialBatch.Batch.update (cyclomatic 28): StaticGeometryPerMaterialBatch.Batch.update has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryPerMaterialBatch.js"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"51c1d8fe2b9fe0cf44ee98a8bcc2bb4fc5111f59e84b258f181d0c0768dabcc5"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticOutlineGeometryBatch.Batch.update (cyclomatic 28): StaticOutlineGeometryBatch.Batch.update has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticOutlineGeometryBatch.js"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9dac4495a332453310d5bf91201b930d4ef0f03aab24eca8aa16d15b4cf40a5"}},{"ruleId":"D1","level":"warning","message":{"text":"View.View.createPotentiallyVisibleSet (cyclomatic 28): View.View.createPotentiallyVisibleSet has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/View.js"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da7e9ad3d4f1fe6faa0d2f75bce87f23364b1091b246a0b239e87206f0a9241"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.Scene.destroy (cyclomatic 28): Scene.Scene.destroy has cyclomatic complexity 28 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":5513}}}],"partialFingerprints":{"codehealthFindingId/v1":"8033dec5d6be306103d0f8915c41a82f20bcba6672423e4042f53c2c4f4f773f"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobeSurfaceTileProvider.computeTileVisibility (cyclomatic 28): GlobeSurfaceTileProvider.computeTileVisibility has cyclomatic complexity 28 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"563285c897c6f203557d1c6ee4b916a2caa442487337364d6b507519f5530254"}},{"ruleId":"D1","level":"warning","message":{"text":"createTracks (cyclomatic 28): createTracks has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"c82f0f32cf50fc4cb09ab7f2df373688a551bc94b2f1a2538bd57eb9e9a89b58"}},{"ruleId":"D1","level":"warning","message":{"text":"EllipseGeometry.computeWallAttributes (cyclomatic 27): EllipseGeometry.computeWallAttributes has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b18fe41f0269de613abe71aae4f29cec984bcd04ac7476a7ad0c4b0b9a3261e"}},{"ruleId":"D1","level":"warning","message":{"text":"GroundPolylineGeometry.GroundPolylineGeometry.createGeometry (cyclomatic 27): GroundPolylineGeometry.GroundPolylineGeometry.createGeometry has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"0198f2ae18ba5016c0c8544a44b7bbbd2622e6266822e1a0f4d34ef2202f4c80"}},{"ruleId":"D1","level":"warning","message":{"text":"Material.createTexture2DUpdateFunction (cyclomatic 27): Material.createTexture2DUpdateFunction has cyclomatic complexity 27 (threshold 15). Most of this is not in the body itself: 1 of the 27 points is its own statement and the rest belongs to one function literal inside it that branches (line 902). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2b43ec28c2027906a38f01bd8b4dc9c2d26b3e0a208c2b6a1146a59336cf84b"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitivePipeline.geometryPipeline (cyclomatic 27): PrimitivePipeline.geometryPipeline has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"df6df0e56c1fe7129a7521e237bd3884cffd62502a3b29da39de87ee90cbe263"}},{"ruleId":"D1","level":"warning","message":{"text":"SampledProperty.SampledProperty.getValue (cyclomatic 27): SampledProperty.SampledProperty.getValue has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/SampledProperty.js"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"03f4c7330f389de65c59285d2cabd5aa038e4430f4f368094a866ca840305046"}},{"ruleId":"D1","level":"warning","message":{"text":"PointVisualizer.PointVisualizer.update (cyclomatic 27): PointVisualizer.PointVisualizer.update has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PointVisualizer.js"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5fda7c226c28fd872dfa1b1063fdf7564f0b507de07c51fe39b0213ca7e4c0f"}},{"ruleId":"D1","level":"warning","message":{"text":"I3SGeometry.I3SGeometry._generateGltf (cyclomatic 27): I3SGeometry.I3SGeometry._generateGltf has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SGeometry.js"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7c45813c6270e5aba1db62cc3148cbcc4d9cc0cf23559f00530020840c5728f"}},{"ruleId":"D1","level":"warning","message":{"text":"Animation.setShuttleRingFromMouseOrTouch (cyclomatic 27): Animation.setShuttleRingFromMouseOrTouch has cyclomatic complexity 27 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/Animation.js"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25a4d33413620d42a61f7c97b1c3f531b6c6879584cfcb69ec37c98daac2772"}},{"ruleId":"D1","level":"warning","message":{"text":"processDescription (cyclomatic 27): processDescription has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2087}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8b87b75d2de9ff8d9f2de2111ce2e7914989e6ef6641ddc3287bb97d9a58f33"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageryLayer (cyclomatic 27): ImageryLayer has cyclomatic complexity 27 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayer.js"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09ceacc58a1df2a9e342c7dca05b9337659f791290c67f233f0ee7e7a40af3d"}},{"ruleId":"D1","level":"warning","message":{"text":"buildVectorGltfFromMVT::buildStructuralMetadata (cyclomatic 27): buildVectorGltfFromMVT::buildStructuralMetadata has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/buildVectorGltfFromMVT.js"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b2238e72d2485c3d4fb3080f3ca9212534f3aa95e2c6468c997740003c360b5"}},{"ruleId":"D1","level":"warning","message":{"text":"WebMapServiceImageryProvider (cyclomatic 27): WebMapServiceImageryProvider has cyclomatic complexity 27 (threshold 15). Of this number, 26 points are the body\u0027s own statements and 1 belongs to 2 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/WebMapServiceImageryProvider.js"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1aa7869177766135bb5323efcb83d3ea0049310d054c71fe42b3aaef03d7ed2"}},{"ruleId":"D1","level":"warning","message":{"text":"OrientedBoundingBox.OrientedBoundingBox.distanceSquaredTo (cyclomatic 26): OrientedBoundingBox.OrientedBoundingBox.distanceSquaredTo has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrientedBoundingBox.js"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"41958703f3b669b2b2f0daf6690ccc34d0521ec2b08b08c0149c5cac3359ebd0"}},{"ruleId":"D1","level":"warning","message":{"text":"CorridorGeometry.extrudedAttributes (cyclomatic 26): CorridorGeometry.extrudedAttributes has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"8122dc61106ed33c7c02d12974df686b192a4b13aaed23f2595b7932586c33a3"}},{"ruleId":"D1","level":"warning","message":{"text":"Intersections2D.Intersections2D.clipTriangleAtAxisAlignedThreshold (cyclomatic 26): Intersections2D.Intersections2D.clipTriangleAtAxisAlignedThreshold has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Intersections2D.js"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4afa08e83613caeaa9fd787d5a36ce1d569e26e750921c7f5a138860da36664"}},{"ruleId":"D1","level":"warning","message":{"text":"GroundPrimitive.GroundPrimitive.update (cyclomatic 26): GroundPrimitive.GroundPrimitive.update has cyclomatic complexity 26 (threshold 15). Of this number, 22 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPrimitive.js"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f57c5de88c90797fcb287666b23b531578bd1383f71625ce9274ef6791bae0b"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTile.Cesium3DTile (cyclomatic 26): Cesium3DTile.Cesium3DTile has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d744bac04e3f69d7c2696fe984e5c00b2fa28d2d753d3646f9a36c3d8fa917b"}},{"ruleId":"D1","level":"warning","message":{"text":"ModelVisualizer.ModelVisualizer.update (cyclomatic 26): ModelVisualizer.ModelVisualizer.update has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/ModelVisualizer.js"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"9928578866d3eb415366689ad20d4655b975913025dfc3c2636705de568b9e77"}},{"ruleId":"D1","level":"warning","message":{"text":"EntityView.updateTransform (cyclomatic 26): EntityView.updateTransform has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityView.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3d620a74df757ac609591274d70f272ab38a38bf598d94ce7f44a963234df7"}},{"ruleId":"D1","level":"warning","message":{"text":"VoxelRenderResources.VoxelRenderResources (cyclomatic 26): VoxelRenderResources.VoxelRenderResources has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelRenderResources.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"412270fd29fda5a29eacc148fa1bd8974ce2c8fdf620c4c0e8bc343aef5bbc2d"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobeSurfaceTileProvider.updateTileBoundingRegion (cyclomatic 26): GlobeSurfaceTileProvider.updateTileBoundingRegion has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fdd0a1effa08dbc6496b1e6caeb601f71496e8e7b1d465de9e788173d631914"}},{"ruleId":"D1","level":"warning","message":{"text":"GeocoderViewModel.GeocoderViewModel (cyclomatic 26): GeocoderViewModel.GeocoderViewModel has cyclomatic complexity 26 (threshold 15). Most of this is not in the body itself: 11 of the 26 points are its own statements and the rest belongs to 7 function literals inside it that branch (lines 105, 93, 74, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Geocoder/GeocoderViewModel.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"251e700c68ac23e66f4e0bef191d775e8e2905ea99427f694ba19567a27242ad"}},{"ruleId":"D1","level":"warning","message":{"text":"loadPrimitive (cyclomatic 26): loadPrimitive has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":2311}}}],"partialFingerprints":{"codehealthFindingId/v1":"7446d49a0738237dafee582ec9e0381eeb220a185be0bcc008cc5109f9725c4e"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.splitLongitudePolyline (cyclomatic 25): GeometryPipeline.splitLongitudePolyline has cyclomatic complexity 25 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2933}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d88e674dd374226162897546e6d78104d83035774246f730b5daac91d1ae599"}},{"ruleId":"D1","level":"warning","message":{"text":"Vector3DTileGeometry.createPrimitive (cyclomatic 25): Vector3DTileGeometry.createPrimitive has cyclomatic complexity 25 (threshold 15). Of this number, 22 points are the body\u0027s own statements and 3 belong to 2 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileGeometry.js"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4ddeae58d44196c27ac223b34e916344a5d3ad2983ba663adb83cd5cab840d"}},{"ruleId":"D1","level":"warning","message":{"text":"MaterialPipelineStage.MaterialPipelineStage.process (cyclomatic 25): MaterialPipelineStage.MaterialPipelineStage.process has cyclomatic complexity 25 (threshold 15). Of this number, 24 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/MaterialPipelineStage.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c2829cc4699388920c0507da3ed96a07b0b089a3ace484a5591bf75cfea467"}},{"ruleId":"D1","level":"warning","message":{"text":"LabelCollection.repositionAllGlyphs (cyclomatic 25): LabelCollection.repositionAllGlyphs has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/LabelCollection.js"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ad48248de57f487a2d1f38039c2f5a7853be2bb47f07a3aa0615a0bf43e1219"}},{"ruleId":"D1","level":"warning","message":{"text":"CzmlDataSource.processMaterialProperty (cyclomatic 25): CzmlDataSource.processMaterialProperty has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: CzmlDataSource.unwrapInterval (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c74269a2458c570e95bbe259878f5f9e822edc107e15363fa3a37b5697f2d7b"}},{"ruleId":"D1","level":"warning","message":{"text":"QuadtreePrimitive.updateHeights (cyclomatic 25): QuadtreePrimitive.updateHeights has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7280c5f1505b9e08f16dad5ae39e12a0845344630a8c0ab73d7f500d5a6cca"}},{"ruleId":"D1","level":"warning","message":{"text":"PointCloud.createResources (cyclomatic 25): PointCloud.createResources has cyclomatic complexity 25 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22a95735964037c4b63146788c29a764afbd2cb6304abe636cbb3864da97be3"}},{"ruleId":"D1","level":"warning","message":{"text":"PointCloud.PointCloud.update (cyclomatic 25): PointCloud.PointCloud.update has cyclomatic complexity 25 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"40b26df3a714f4102e142d597244a2cf1fa3c3f68bf9b96740b4b93e74d36c0d"}},{"ruleId":"D1","level":"warning","message":{"text":"main.buildCategoryPanel (cyclomatic 25): main.buildCategoryPanel has cyclomatic complexity 25 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 10 belong to 6 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/aec-tileset-metadata-filtering/main.js"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb163ace58870aa6dcf85292e3515f5c7dc9e4aa8c020854576fc50bbf516785"}},{"ruleId":"D1","level":"warning","message":{"text":"DiffMatcher.fuzzyMatch (cyclomatic 25): DiffMatcher.fuzzyMatch has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b595ed9f4016a03fa5608351517d125fbe40460199b6ee9a68b06168c0988f9"}},{"ruleId":"D1","level":"warning","message":{"text":"equals (cyclomatic 25): equals has cyclomatic complexity 25 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"e649be2a9f168d69ad2c1010ce1430e0f9c75d95743c9aed90a05a4bee1c18e3"}},{"ruleId":"D1","level":"warning","message":{"text":"test (cyclomatic 25): test has cyclomatic complexity 25 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 2 belong to 2 function items inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"db3b6ec853b4c039ed06ca4c5caf94f34c8119bbccfae94a813e4cc122bc192f"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 25): update has cyclomatic complexity 25 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelCylinderShape.js"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fbec7cada29591efa2696dd78f7fceb434adbc51ea90a94b66a7b99c12edb38"}},{"ruleId":"D1","level":"warning","message":{"text":"Primitive.modifyForEncodedNormals (cyclomatic 24): Primitive.modifyForEncodedNormals has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8eaf3d12de8b25548eed09a548380f95e3c073077fa77d8e3b30bae06a834e0"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryUpdater.GeometryUpdater._onEntityPropertyChanged (cyclomatic 24): GeometryUpdater.GeometryUpdater._onEntityPropertyChanged has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeometryUpdater.js"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6ee423cd90527e4f9a125048273a87ab943c2152e867c30d43a69b626bb3a1e"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTileBatchTable.Cesium3DTileBatchTable.addDerivedCommands (cyclomatic 24): Cesium3DTileBatchTable.Cesium3DTileBatchTable.addDerivedCommands has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileBatchTable.js"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef73af9f7f5515dd77c3568ee19d8d9a97957e217d4674e34b94ad3ef0ad8a42"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineCollection.createCommandLists (cyclomatic 24): PolylineCollection.createCommandLists has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"8174650ddd7a2d72a365f832c1d12bd666e7614949c332e05a81b2e8980186dd"}},{"ruleId":"D1","level":"warning","message":{"text":"TerrainFillMesh.addEdgeMesh (cyclomatic 24): TerrainFillMesh.addEdgeMesh has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"84fc354c0dabdfb75a2c6888993d7ecdd42467222b94c443eb11215c46d02958"}},{"ruleId":"D1","level":"warning","message":{"text":"applyStyle (cyclomatic 24): applyStyle has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb91fb667245e32971e03316fc6fb075b2bfb054e1d3194e84cbe861de836a09"}},{"ruleId":"D1","level":"warning","message":{"text":"getNetworkLinkUpdateCallback (cyclomatic 24): getNetworkLinkUpdateCallback has cyclomatic complexity 24 (threshold 15). Most of this is not in the body itself: 1 of the 24 points is its own statement and the rest belongs to 2 function items inside it that branch ((anonymous), (anonymous)::removeChildren). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3991}}}],"partialFingerprints":{"codehealthFindingId/v1":"a202f6bd931521707061c17ed161f0c765bcedab758cefa4d085301ea881a7e6"}},{"ruleId":"D1","level":"warning","message":{"text":"MetadataTableProperty (cyclomatic 24): MetadataTableProperty has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataTableProperty.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9b02bd9768bda5ae5e374ae91862f12453eb28ae4617b53d83824784a26ff45"}},{"ruleId":"D1","level":"warning","message":{"text":"QuarticRealPolynomial.neumark (cyclomatic 23): QuarticRealPolynomial.neumark has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: QuarticRealPolynomial.QuarticRealPolynomial.computeRealRoots (cyclomatic 27) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/QuarticRealPolynomial.js"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef29c213b47d3c4493f10f756200c881301972cbb5cbda9c0f4f8ae962a1d6d6"}},{"ruleId":"D1","level":"warning","message":{"text":"PolygonGeometryLibrary.PolygonGeometryLibrary.computeWallGeometry (cyclomatic 23): PolygonGeometryLibrary.PolygonGeometryLibrary.computeWallGeometry has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6874d734eded816fead22781997be00d0b7072cc16c0a6cbbe07700349c9562"}},{"ruleId":"D1","level":"warning","message":{"text":"CoplanarPolygonGeometry.createGeometryFromPolygon (cyclomatic 23): CoplanarPolygonGeometry.createGeometryFromPolygon has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CoplanarPolygonGeometry.js"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26528c93c9f11df8fe6a4f398d68c859b3450a86cc521d90d9cf738349306c3"}},{"ruleId":"D1","level":"warning","message":{"text":"SimplePolylineGeometry.SimplePolylineGeometry.createGeometry (cyclomatic 23): SimplePolylineGeometry.SimplePolylineGeometry.createGeometry has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/SimplePolylineGeometry.js"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82ab088224f8caa624b18765552803f0d6d24676b34f3339fc333329a3ce094"}},{"ruleId":"D1","level":"warning","message":{"text":"GoogleEarthEnterpriseTerrainProvider.GoogleEarthEnterpriseTerrainProvider.requestTileGeometry (cyclomatic 23): GoogleEarthEnterpriseTerrainProvider.GoogleEarthEnterpriseTerrainProvider.requestTileGeometry has cyclomatic complexity 23 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 7 belong to 4 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GoogleEarthEnterpriseTerrainProvider.js"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5220f0fd07ffd6506cc5a274868b23c109a9d848a324bcc9666597a14c741f"}},{"ruleId":"D1","level":"warning","message":{"text":"Expression.getEvaluateTernaryComponentwise (cyclomatic 23): Expression.getEvaluateTernaryComponentwise has cyclomatic complexity 23 (threshold 15). Most of this is not in the body itself: 1 of the 23 points is its own statement and the rest belongs to one function literal inside it that branches (line 415). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"de42c5635c3550528d435bfb500d33fb67a88e1b98d28b66a8dc1933669ee188"}},{"ruleId":"D1","level":"warning","message":{"text":"Label.reverseRtl (cyclomatic 23): Label.reverseRtl has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Label.Label.equals (cyclomatic 25) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"a08aad4829e84f37f4502f11b468c8c3f2cbacdddce04221a30e2b1d731b92c9"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticGroundPolylinePerMaterialBatch.Batch.update (cyclomatic 23): StaticGroundPolylinePerMaterialBatch.Batch.update has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"a269984a63b21864cc412d3d362b419552201feac918968ccc6b043937bb0463"}},{"ruleId":"D1","level":"warning","message":{"text":"KmlDataSource.processStyles (cyclomatic 23): KmlDataSource.processStyles has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: KmlDataSource.processScreenOverlay (cyclomatic 32) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"171ae030bb6ded6a7e72531193b898c1ee79cae8b785a7628e5e60b128eb96c1"}},{"ruleId":"D1","level":"warning","message":{"text":"Camera.Camera._updateCameraChanged (cyclomatic 23): Camera.Camera._updateCameraChanged has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac0d0d0d0ebefa3de92dd045d236a0e17dbf0c357ca07c3db2e166be040b0da"}},{"ruleId":"D1","level":"warning","message":{"text":"CubeMapPanorama.CubeMapPanorama.update (cyclomatic 23): CubeMapPanorama.CubeMapPanorama.update has cyclomatic complexity 23 (threshold 15). Of this number, 22 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CubeMapPanorama.js"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"76327ebc10d865a09a5e1fd553ce8996d416fdb98fbe0f0b637360ceb99dc9cd"}},{"ruleId":"D1","level":"warning","message":{"text":"OIT.OIT.update (cyclomatic 23): OIT.OIT.update has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/OIT.js"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16991ef93f2b871821e12f015fbde0282a478b8e04c7d7b4dca43558ad1af46"}},{"ruleId":"D1","level":"warning","message":{"text":"PostProcessStageTextureCache.PostProcessStageTextureCache.update (cyclomatic 23): PostProcessStageTextureCache.PostProcessStageTextureCache.update has cyclomatic complexity 23 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStageTextureCache.js"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8f39758f906aa441b501184de3e0d06d743730f516fe313d5aa6fcbd545575"}},{"ruleId":"D1","level":"warning","message":{"text":"ScreenSpaceCameraController.pan3D (cyclomatic 23): ScreenSpaceCameraController.pan3D has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2104}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e67e8555769e5c0e22669d8a96975b7043aecf2a3ee1d3f5b1190360aca613d"}},{"ruleId":"D1","level":"warning","message":{"text":"I3SNode.I3SNode._create3DTileDefinition (cyclomatic 23): I3SNode.I3SNode._create3DTileDefinition has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SNode.js"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"f570ae7231da849cfb1c11606c3595de68b268cf9e8bfae0e05c109a4779c4c8"}},{"ruleId":"D1","level":"warning","message":{"text":"GeminiClient.streamRequest (cyclomatic 23): GeminiClient.streamRequest has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/GeminiClient.ts"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"47a107b4ac7e2bc6b88d6405ef88b749de51cbe11caf1a12ef906548042bc3b9"}},{"ruleId":"D1","level":"warning","message":{"text":"PromptInput.PromptInput (cyclomatic 23): PromptInput.PromptInput has cyclomatic complexity 23 (threshold 15). Most of this is not in the body itself: 8 of the 23 points are its own statements and the rest belongs to 5 function literals inside it that branch (lines 122, 50, 77, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/PromptInput.tsx"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"593cd2f726a18bbc580dd30e39181d7651bfa4596bcbdbcb7d940de5857bfbf8"}},{"ruleId":"D1","level":"warning","message":{"text":"loadAsynchronous (cyclomatic 23): loadAsynchronous has cyclomatic complexity 23 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 2 belong to 4 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"479be0e09fcc73c7c7160f8fb1cca5191e298cbecc1274665eacbd0d8a2a8591"}},{"ruleId":"D1","level":"warning","message":{"text":"wirePolygon (cyclomatic 23): wirePolygon has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"5820d8b18903534f5750cea39c64c09a5e3a125d6c82b19d921bdf0f0d831ffd"}},{"ruleId":"D1","level":"warning","message":{"text":"WebMapTileServiceImageryProvider (cyclomatic 23): WebMapTileServiceImageryProvider has cyclomatic complexity 23 (threshold 15). Of this number, 22 points are the body\u0027s own statements and 1 belongs to 2 function items inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/WebMapTileServiceImageryProvider.js"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbed458c9f9e706a3daa918a7e32df2cbf75ad5a5c3cb062f27871be16edb68d"}},{"ruleId":"D1","level":"warning","message":{"text":"QuarticRealPolynomial.original (cyclomatic 22): QuarticRealPolynomial.original has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: QuarticRealPolynomial.QuarticRealPolynomial.computeRealRoots (cyclomatic 27) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/QuarticRealPolynomial.js"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"61ea93389c65ba3c4c2abebf6f29bea5662a7e39d2b10664755202efcebf0f0d"}},{"ruleId":"D1","level":"warning","message":{"text":"CubeMap.CubeMap (cyclomatic 22): CubeMap.CubeMap has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/CubeMap.js"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f053b0df67709ef143b4a659a3a752ec738b3eb82411f081c8e8024e2380385"}},{"ruleId":"D1","level":"warning","message":{"text":"Material.getUniformType (cyclomatic 22): Material.getUniformType has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b251844a7a873404dbc9542a90d5d22e2334cf04146285b5a0674487cd3d836"}},{"ruleId":"D1","level":"warning","message":{"text":"I3dmLoader.createInstances (cyclomatic 22): I3dmLoader.createInstances has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/I3dmLoader.js"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"de19505794c54dfada2f8c0676e5714a161e13c82d0b23aebea4c3f73e8a8a6c"}},{"ruleId":"D1","level":"warning","message":{"text":"PntsParser.PntsParser.parse (cyclomatic 22): PntsParser.PntsParser.parse has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PntsParser.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"15ea0886d36ce3587716f1027e3176157223d0fcea6cdbc2fd8c57b209a5291d"}},{"ruleId":"D1","level":"warning","message":{"text":"LabelCollection.rebindAllGlyphs (cyclomatic 22): LabelCollection.rebindAllGlyphs has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/LabelCollection.js"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d0f05b51577ff000b228ba430e8d7aec7d1083c226dd1f3527ced631a289c72"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTileset.updateTiles (cyclomatic 22): Cesium3DTileset.updateTiles has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":3199}}}],"partialFingerprints":{"codehealthFindingId/v1":"80792fbbbcfb78136a8e35200a8e1e5d0949c020ddfb943725d38f9815399c83"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticGroundGeometryColorBatch.Batch.update (cyclomatic 22): StaticGroundGeometryColorBatch.Batch.update has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundGeometryColorBatch.js"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"b568f739a3b63d3fb8450107dc3f326c4753efff0e818edb26fb4eb6bb8463eb"}},{"ruleId":"D1","level":"warning","message":{"text":"CameraFlightPath.CameraFlightPath.createTween (cyclomatic 22): CameraFlightPath.CameraFlightPath.createTween has cyclomatic complexity 22 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CameraFlightPath.js"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7f8c008be436965dda701896d54b258178c3035bb580aab984848dec289d1d"}},{"ruleId":"D1","level":"warning","message":{"text":"PostProcessStageCollection.PostProcessStageCollection.execute (cyclomatic 22): PostProcessStageCollection.PostProcessStageCollection.execute has cyclomatic complexity 22 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStageCollection.js"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"b651dd474443891f69c63c12ab14d238022c8bf4052499342eb4219600b05f79"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.Scene.updateDerivedCommands (cyclomatic 22): Scene.Scene.updateDerivedCommands has cyclomatic complexity 22 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":1896}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc538fbe8e16aa63736ce89940214bce36e015795e84528fdca52152aa8ffcf1"}},{"ruleId":"D1","level":"warning","message":{"text":"TerrainFillMesh.getCornerFromEdge (cyclomatic 22): TerrainFillMesh.getCornerFromEdge has cyclomatic complexity 22 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"55cd1c52d69f8c66c90717b968d489419177f75597fb56aef5f7d9193b979938"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobeSurfaceTileProvider.canRenderWithoutLosingDetail (cyclomatic 22): GlobeSurfaceTileProvider.canRenderWithoutLosingDetail has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"e05861eb4a0e5269c176b6ab1442f63c42b5de1473856dc1cef3b5307d73dcbb"}},{"ruleId":"D1","level":"warning","message":{"text":"decodeMVT.decodeGeometry (cyclomatic 22): decodeMVT.decodeGeometry has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/decodeMVT.js"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac2d7ef1567cb59e20a5d0ee3a849bfef89cbcd91ae56347262273e041cf5d7b"}},{"ruleId":"D1","level":"warning","message":{"text":"decodeDraco (cyclomatic 22): decodeDraco has cyclomatic complexity 22 (threshold 15). Most of this is not in the body itself: 5 of the 22 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1179, 1263). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"de76b96ebffe4e7233ef33a37c02242cea65e77e81acfc6e2ba1a5f9baaad0fb"}},{"ruleId":"D1","level":"warning","message":{"text":"updateDerivedCommands (cyclomatic 22): updateDerivedCommands has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeTranslucencyState.js"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8b6bf5145842cabededb5b5ab60506fc847b6abebeb6d81530b1f2932e5f382"}},{"ruleId":"D1","level":"warning","message":{"text":"fromGeometry (cyclomatic 22): fromGeometry has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"f970969710ae5e192436412c1e36f079f9f6f14db82ae6b56e22972d02d26f6b"}},{"ruleId":"D1","level":"warning","message":{"text":"PolygonGeometryLibrary.PolygonGeometryLibrary.polygonsFromHierarchy (cyclomatic 21): PolygonGeometryLibrary.PolygonGeometryLibrary.polygonsFromHierarchy has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"20132d9db70807f8832e84857e7a5bec59cadaf1623544872b3954272787b587"}},{"ruleId":"D1","level":"warning","message":{"text":"TimeInterval.TimeInterval.intersect (cyclomatic 21): TimeInterval.TimeInterval.intersect has cyclomatic complexity 21 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeInterval.js"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"174c5d38bb4e281aadcd0ea93f39c4ac122110510fbdc1d0f7281a1c40321521"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTilesTerrainGeometryProcessor.clipTileFromQuadrant (cyclomatic 21): Cesium3DTilesTerrainGeometryProcessor.clipTileFromQuadrant has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"be417bcebd4f3ca91a68f04e301571f4a0b8e8654e4edba7938f0ce8152de7d9"}},{"ruleId":"D1","level":"warning","message":{"text":"ScreenSpaceEventHandler.fireTouchEvents (cyclomatic 21): ScreenSpaceEventHandler.fireTouchEvents has cyclomatic complexity 21 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/ScreenSpaceEventHandler.js"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cd2ffac2d072fb2e5d5be70e432b8ed925ac5bc13c2ababdadb0dc074eef664"}},{"ruleId":"D1","level":"warning","message":{"text":"ShaderSource.combineShader (cyclomatic 21): ShaderSource.combineShader has cyclomatic complexity 21 (threshold 15). Of this number, 20 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/ShaderSource.js"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"054a6e1c7ed1b151590116c6332815636b86aea3602f69c87d20e1a403de6fa9"}},{"ruleId":"D1","level":"warning","message":{"text":"Expression.Node._evaluateTimes (cyclomatic 21): Expression.Node._evaluateTimes has cyclomatic complexity 21 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1497}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae87d28d9dafe6a5127d699151e6dd3775299210b1cf02b575f33585e497f5b"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTileFeature.getPropertyInherited (cyclomatic 21): Cesium3DTileFeature.getPropertyInherited has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileFeature.js"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf4ac4d0647e7918170d7a01aa24294d3fcbffe7e95c9d04a5f8017490968fa0"}},{"ruleId":"D1","level":"warning","message":{"text":"FramebufferManager.FramebufferManager.update (cyclomatic 21): FramebufferManager.FramebufferManager.update has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/FramebufferManager.js"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8d483331ac1dd85f1c9859f2697fd7e8ad96dd74714c23c9100fc2ff22990b5"}},{"ruleId":"D1","level":"warning","message":{"text":"TileMapServiceImageryProvider.TileMapServiceImageryProvider._metadataSuccess (cyclomatic 21): TileMapServiceImageryProvider.TileMapServiceImageryProvider._metadataSuccess has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TileMapServiceImageryProvider.js"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b049ff5e1e493224b0c0e51157f0546d4a4ab231c5b286984c7d60a7f90826"}},{"ruleId":"D1","level":"warning","message":{"text":"Vector3DTileContent.initialize (cyclomatic 21): Vector3DTileContent.initialize has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileContent.js"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"33584637259c8d004f5ff5e42579592c81eb1a66ce63f76f904c364987336a80"}},{"ruleId":"D1","level":"warning","message":{"text":"PathVisualizer.PathVisualizer.update (cyclomatic 21): PathVisualizer.PathVisualizer.update has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"31bd385e422572bed8d1101b1177d4635e622e5dbef9cbe3e1654663faed6752"}},{"ruleId":"D1","level":"warning","message":{"text":"TranslucentTileClassification.updateResources (cyclomatic 21): TranslucentTileClassification.updateResources has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TranslucentTileClassification.js"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7673ebd10c71410aadb807da5f07ad22d00bfcce610bb5255906cdb8ea16798"}},{"ruleId":"D1","level":"warning","message":{"text":"ScreenSpaceCameraController.rotateCVOnTerrain (cyclomatic 21): ScreenSpaceCameraController.rotateCVOnTerrain has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"75e6bdd07bdbe9e0116c3b5119b213e060aac9c694f4215f85591d45a4115182"}},{"ruleId":"D1","level":"warning","message":{"text":"TerrainFillMesh.createFillMesh (cyclomatic 21): TerrainFillMesh.createFillMesh has cyclomatic complexity 21 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"72a9476a40933f2e03e83bcf1b3dad6752d5511fe4cc1565b543fdc533b13fae"}},{"ruleId":"D1","level":"warning","message":{"text":"createVectorTilePolygons.createVectorTilePolygons (cyclomatic 21): createVectorTilePolygons.createVectorTilePolygons has cyclomatic complexity 21 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTilePolygons.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec4f99a166584e4e96afdf82fbcc2bf6a928624548e8f6310d75e59907f14e9c"}},{"ruleId":"D1","level":"warning","message":{"text":"Viewer.Viewer.resize (cyclomatic 21): Viewer.Viewer.resize has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":1575}}}],"partialFingerprints":{"codehealthFindingId/v1":"81773550fb141f42f26afe35ea251bfd16f4e04eacc07ead1888c81cb2e5d829"}},{"ruleId":"D1","level":"warning","message":{"text":"VoxelInspectorViewModel.VoxelInspectorViewModel (cyclomatic 21): VoxelInspectorViewModel.VoxelInspectorViewModel has cyclomatic complexity 21 (threshold 15). Most of this is not in the body itself: 4 of the 21 points are its own statements and the rest belongs to 10 function literals inside it that branch (lines 95, 642, 657, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/VoxelInspector/VoxelInspectorViewModel.js"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"00cc05fe07f2ed43c6c5ce14f2961fb1aa5b899a0a2fec1704b686f7eda069dd"}},{"ruleId":"D1","level":"warning","message":{"text":"processBillboardIcon (cyclomatic 21): processBillboardIcon has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"f446053bb4957381d7239b737ab3454c3fafd1d4f5d9c349ed9502a1a9a947bd"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 21): update has cyclomatic complexity 21 (threshold 15). Most of this is not in the body itself: 7 of the 21 points are its own statements and the rest belongs to 3 function items inside it that branch ((anonymous), recurseIgnoreEntities, (anonymous)::(anonymous)). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3845}}}],"partialFingerprints":{"codehealthFindingId/v1":"91489913cad431ea06590559824179b5dd6f5c46e5c77d196d0b14c8ade6df40"}},{"ruleId":"D1","level":"warning","message":{"text":"look3D (cyclomatic 21): look3D has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2751}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2747bc8d2d7f0ad6a035633a048230858f502aa063e3cf6c9f57bb4dd161088"}},{"ruleId":"D1","level":"warning","message":{"text":"loadWithXhr::onload (cyclomatic 21): loadWithXhr::onload has cyclomatic complexity 21 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":2159}}}],"partialFingerprints":{"codehealthFindingId/v1":"769b17a7b39b8c338b3ed69d20d7ddc26ff9339392df6f30080b9103d10e9954"}},{"ruleId":"D1","level":"warning","message":{"text":"PolygonGeometry (cyclomatic 21): PolygonGeometry has cyclomatic complexity 21 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"42e81627965f5f012495514b077ff2a0cdf0942e37fecfcaa90d5497e484d7f7"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.splitLongitudeTriangles (cyclomatic 20): GeometryPipeline.splitLongitudeTriangles has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2411}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1af92813ad1ce44ede8b10821b0cd4fcf58a39d36c1d181c07959d1cf4c81b"}},{"ruleId":"D1","level":"warning","message":{"text":"PolygonGeometry.PolygonGeometry.createGeometry (cyclomatic 20): PolygonGeometry.PolygonGeometry.createGeometry has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e0772121ee13d3dbb83a409ad3962872580a429267c2491e3c2ba2977edd72"}},{"ruleId":"D1","level":"warning","message":{"text":"Buffer.Buffer.copyFromBuffer (cyclomatic 20): Buffer.Buffer.copyFromBuffer has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Buffer.js"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a46d38e76d518daf7eb300d6d9e0a527fd4e0c17688809f5f04aad01caf4ec"}},{"ruleId":"D1","level":"warning","message":{"text":"GltfTextureLoader.createTexture (cyclomatic 20): GltfTextureLoader.createTexture has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfTextureLoader.js"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b28f0f2d786aa0144bd551d922783fd17e87b0ac2c9245eab8d1e969f40ea6f"}},{"ruleId":"D1","level":"warning","message":{"text":"GroundPolylinePrimitive.GroundPolylinePrimitive.update (cyclomatic 20): GroundPolylinePrimitive.GroundPolylinePrimitive.update has cyclomatic complexity 20 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPolylinePrimitive.js"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f42eae1e2ce76206ff44c11c3d932479862c1ae813b1dd09debb14fcb3f752c"}},{"ruleId":"D1","level":"warning","message":{"text":"pickModel.pickModel (cyclomatic 20): pickModel.pickModel has cyclomatic complexity 20 (threshold 15). Most of this is not in the body itself: 6 of the 20 points are its own statements and the rest belongs to one function literal inside it that branches (line 93). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/pickModel.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c270360591cc886797edf66ccb386b1d3351b4a3dd1bfe0c2382f3f4ff8e444"}},{"ruleId":"D1","level":"warning","message":{"text":"Cesium3DTilesetBaseTraversal.updateAndPushChildren (cyclomatic 20): Cesium3DTilesetBaseTraversal.updateAndPushChildren has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTilesetBaseTraversal.js"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"8195a0dbbdacf90f5afb453652377745aa8de85f111f6eed51508419ebd06c91"}},{"ruleId":"D1","level":"warning","message":{"text":"GeoJsonDataSource.createObject (cyclomatic 20): GeoJsonDataSource.createObject has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d37333a894f8575d904a6191e655931aa02efdbcde9905cbd9eb331a48fca6"}},{"ruleId":"D1","level":"warning","message":{"text":"KmlDataSource.processGroundOverlay (cyclomatic 20): KmlDataSource.processGroundOverlay has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: KmlDataSource.processScreenOverlay (cyclomatic 32) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2619}}}],"partialFingerprints":{"codehealthFindingId/v1":"57b01df92c23f535204173daa8a6991baaf4cd705828326657818d6c96203914"}},{"ruleId":"D1","level":"warning","message":{"text":"exportKml.recurseEntities (cyclomatic 20): exportKml.recurseEntities has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b33e8259804043d1e033b2fc2b782100b3ad0d956e9e4455edbb24359297f2"}},{"ruleId":"D1","level":"warning","message":{"text":"ScreenSpaceCameraController.tilt3DOnTerrain (cyclomatic 20): ScreenSpaceCameraController.tilt3DOnTerrain has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2550}}}],"partialFingerprints":{"codehealthFindingId/v1":"9456ba73595b7bb66df035fc703edc9cbb975e257c52b5508dbfb633a94e51ab"}},{"ruleId":"D1","level":"warning","message":{"text":"VoxelPrimitive.VoxelPrimitive.update (cyclomatic 20): VoxelPrimitive.VoxelPrimitive.update has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelPrimitive.js"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f6c9ed34bfee79d04178964ee58e5fe33ae81453c92dfc5f73159b65b904df"}},{"ruleId":"D1","level":"warning","message":{"text":"updateForPass (cyclomatic 20): updateForPass has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":3612}}}],"partialFingerprints":{"codehealthFindingId/v1":"df7478b150522b176fd2702b713fd43a04c7245b0678172a833ed23f2c71c0e3"}},{"ruleId":"D1","level":"warning","message":{"text":"processLineStringOrLinearRing (cyclomatic 20): processLineStringOrLinearRing has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1573}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c290755c12fe0af4fe8342d38ada93a5e0789d090a1dbb2e3de0c3cd6fcb64"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 20): update has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"0607302e7f99b559ed14ef4e6fb65803b3f5210ac7b4f7913bee6a586c900773"}},{"ruleId":"D1","level":"warning","message":{"text":"equals (cyclomatic 20): equals has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Billboard.js"},"region":{"startLine":1555}}}],"partialFingerprints":{"codehealthFindingId/v1":"798cb19ae4a48bef4dbf27085ed9da78c99dec29334d7eec6e37ad711f8bddb1"}},{"ruleId":"D1","level":"warning","message":{"text":"fromRectangle (cyclomatic 20): fromRectangle has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrientedBoundingBox.js"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"6682841330435dea4d0c31d4189919dcfb40652ed331eefb8c262a1dd0355a44"}},{"ruleId":"D1","level":"warning","message":{"text":"getHeight (cyclomatic 20): getHeight has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Globe.js"},"region":{"startLine":853}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6a24e2e33b8ad2effc15db91e2650994160e82fe7c8828f15e23812b00f970"}},{"ruleId":"D1","level":"warning","message":{"text":"CubicRealPolynomial.CubicRealPolynomial.computeRealRoots (cyclomatic 19): CubicRealPolynomial.CubicRealPolynomial.computeRealRoots has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CubicRealPolynomial.js"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"97678135dc91af5b94b7523a349c6a8355bef218058e87bb7653105074de809d"}},{"ruleId":"D1","level":"warning","message":{"text":"BoundingSphere.fromEncodedCartesianVertices (cyclomatic 19): BoundingSphere.fromEncodedCartesianVertices has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af9c761c761942d075701f85be8d819fab5f4506761ef4f636bd57f01ca7354"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.combineGeometries (cyclomatic 19): GeometryPipeline.combineGeometries has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b013f03fbbc5d631cc6c738a6743a99f1cac54cf2f1ac31dd7dd9d9026738f9"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.computeTriangleAttributes (cyclomatic 19): GeometryPipeline.computeTriangleAttributes has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2168}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea24b756c423e05dcb57eb31299d07f7e867e57dd602a7713a23ba32cb8e0f3b"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineVolumeGeometry.computeAttributes (cyclomatic 19): PolylineVolumeGeometry.computeAttributes has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineVolumeGeometry.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7be8bfdcda348d2c39e3339c9da31ceac8a58c03be4807c131141a5268fa8e"}},{"ruleId":"D1","level":"warning","message":{"text":"TimeIntervalCollection.parseDuration (cyclomatic 19): TimeIntervalCollection.parseDuration has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ff11682e980934e33d7c89150956f5eddaab2013f84c64ab776e47d8ed75d74"}},{"ruleId":"D1","level":"warning","message":{"text":"TileAvailability.findMaxLevelFromNode (cyclomatic 19): TileAvailability.findMaxLevelFromNode has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/TileAvailability.js"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6d1a1264074017dd03272d9bde0847eb76225803f1a48404a394bbd124f0503"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitiveOutlineGenerator.matchAndStoreCoordinates (cyclomatic 19): PrimitiveOutlineGenerator.matchAndStoreCoordinates has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/PrimitiveOutlineGenerator.js"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"e316e053528ecf84fc559d8d4f94b698603789583b97fc7bd0bb021f184e499e"}},{"ruleId":"D1","level":"warning","message":{"text":"EdgeVisibilityPipelineStage.collectVertexColors (cyclomatic 19): EdgeVisibilityPipelineStage.collectVertexColors has cyclomatic complexity 19 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea287caeec08ed8783e2a7af34331aedf9714d29672050cbed3ce869594a4d7"}},{"ruleId":"D1","level":"warning","message":{"text":"Model3DTileContent.update (cyclomatic 19): Model3DTileContent.update has cyclomatic complexity 19 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model3DTileContent.js"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"708a3d731ed9128c57345cc06f998b093ee26652aaf214e1001a59165736ea9a"}},{"ruleId":"D1","level":"warning","message":{"text":"TileOrientedBoundingBox.checkHalfAxes (cyclomatic 19): TileOrientedBoundingBox.checkHalfAxes has cyclomatic complexity 19 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TileOrientedBoundingBox.js"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"9774d435334b522472acdb414c3a92214921eeb0197c55a772128637dd39867f"}},{"ruleId":"D1","level":"warning","message":{"text":"EntityCluster.EntityCluster.update (cyclomatic 19): EntityCluster.EntityCluster.update has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityCluster.js"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"faeaf43e6ac92dadd6f4a032f4382d0ddbe49e5f2b4e60729a906edf07b497c5"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticGroundGeometryPerMaterialBatch.Batch.update (cyclomatic 19): StaticGroundGeometryPerMaterialBatch.Batch.update has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1c8fa2bbe0e9f4a09fc8c931c228651834d96237391133d4b72776a10608d3"}},{"ruleId":"D1","level":"warning","message":{"text":"fetchImage (cyclomatic 19): fetchImage has cyclomatic complexity 19 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 6 belong to 4 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fc20a1baf8956b5d72774c1d3eb650a4cd22a6ad566c50c75446ae1de85d096"}},{"ruleId":"D1","level":"warning","message":{"text":"fromVertices (cyclomatic 19): fromVertices has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"6476c3fc15f74aca542601ddc9a193a8e5e4876dffc2ef78c5f3d1162c3eecd6"}},{"ruleId":"D1","level":"warning","message":{"text":"constructor (cyclomatic 19): constructor has cyclomatic complexity 19 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GeoJsonPrimitive.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d91b61674b1f8724b024f4d95c804d12668a5a5816824a4b96360544d4fdd62"}},{"ruleId":"D1","level":"warning","message":{"text":"FixedFrameTransforms.FixedFrameTransforms.localFrameToFixedFrameGenerator (cyclomatic 18): FixedFrameTransforms.FixedFrameTransforms.localFrameToFixedFrameGenerator has cyclomatic complexity 18 (threshold 15). Most of this is not in the body itself: 4 of the 18 points are its own statements and the rest belongs to one function literal inside it that branches (line 138). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/FixedFrameTransforms.js"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"503355be363d9de68a5ebf94eee2ee843d9c15190540929911304f26fd35545a"}},{"ruleId":"D1","level":"warning","message":{"text":"Spline.Spline.findTimeInterval (cyclomatic 18): Spline.Spline.findTimeInterval has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Spline.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad5f5200aef5c4fc4ffaedbe0df88b785297c1c368bec68d66d09ba38b29fec4"}},{"ruleId":"D1","level":"warning","message":{"text":"MetadataClassProperty.parseType (cyclomatic 18): MetadataClassProperty.parseType has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataClassProperty.js"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"a637f7ebeb8947f1105fb46fad130564650aa2f94e69225bdb138e9fc80e1935"}},{"ruleId":"D1","level":"warning","message":{"text":"CesiumTerrainProvider.requestTileGeometry (cyclomatic 18): CesiumTerrainProvider.requestTileGeometry has cyclomatic complexity 18 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"7081ef1d2bff74f3f690a94c25855b95f21da86f82f1de8b34cd84c300700fb0"}},{"ruleId":"D1","level":"warning","message":{"text":"VectorPipeline._clipRingToRect (cyclomatic 18): VectorPipeline._clipRingToRect has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VectorPipeline.js"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dae58b9b69436cc52f3fc2c633537f1e98a15f0b076de11029dbaad31d784d3"}},{"ruleId":"D1","level":"warning","message":{"text":"GeoJsonLoader.parse (cyclomatic 18): GeoJsonLoader.parse has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/GeoJsonLoader.js"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d2cf3edee5585704b6c56695d32f6b522ebd812fb704c059511c8efb1c2573"}},{"ruleId":"D1","level":"warning","message":{"text":"EdgeVisibilityPipelineStage.EdgeVisibilityPipelineStage.process (cyclomatic 18): EdgeVisibilityPipelineStage.EdgeVisibilityPipelineStage.process has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"6db379a83a6b4f362827f5bbe64b6e9aacf7a8becc9662393a64bad0c36435fe"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineGeometryUpdater.DynamicGeometryUpdater.update (cyclomatic 18): PolylineGeometryUpdater.DynamicGeometryUpdater.update has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PolylineGeometryUpdater.js"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"473b9ba4af0789879ed2534bad79eaf5a31361ed564606a8497103de288677b8"}},{"ruleId":"D1","level":"warning","message":{"text":"GeoJsonDataSource.createPolygon (cyclomatic 18): GeoJsonDataSource.createPolygon has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"549424b31af577528ce45c89764daeb8eaf2509a14708bdd7e5e5d2b6735fb2f"}},{"ruleId":"D1","level":"warning","message":{"text":"CloudCollection.CloudCollection.update (cyclomatic 18): CloudCollection.CloudCollection.update has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CloudCollection.js"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"110f342d078ec0ede0c715df8ba63a01c91b19d82be8b7e639bccf607237a032"}},{"ruleId":"D1","level":"warning","message":{"text":"ShadowMap.applyDebugSettings (cyclomatic 18): ShadowMap.applyDebugSettings has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":929}}}],"partialFingerprints":{"codehealthFindingId/v1":"25201b2100194703380bf832d039d64bf6249a1114aaad463ae9f061e423f613"}},{"ruleId":"D1","level":"warning","message":{"text":"processVoxelProperties.processVoxelProperties (cyclomatic 18): processVoxelProperties.processVoxelProperties has cyclomatic complexity 18 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/processVoxelProperties.js"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc481d17166ae1d57063950292ce51b60cfbe49ed105d0eec12ca5ebe36e1b1"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.Scene.getCompressedTextureFormatSupported (cyclomatic 18): Scene.Scene.getCompressedTextureFormatSupported has cyclomatic complexity 18 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":1769}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2d01e611ec7ddd5ead9c387e0a2fcdfb41432f71c0aed3b35ca24d5dffadfc"}},{"ruleId":"D1","level":"warning","message":{"text":"ParticleSystem.ParticleSystem.update (cyclomatic 18): ParticleSystem.ParticleSystem.update has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ParticleSystem.js"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d6e3ac1d926f502bf2ab7064eb86512d224a2e4964d1ed957ef0899a26190bc"}},{"ruleId":"D1","level":"warning","message":{"text":"decodeI3S.decodeDracoEncodedGeometry (cyclomatic 18): decodeI3S.decodeDracoEncodedGeometry has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"968912b50e5913e8fd6aad1a555fa50cc183ce3cc56b231fabb5d2d75feac76f"}},{"ruleId":"D1","level":"warning","message":{"text":"decodeI3S.decodeDracoAttribute (cyclomatic 18): decodeI3S.decodeDracoAttribute has cyclomatic complexity 18 (threshold 15). Most of this is not in the body itself: 2 of the 18 points are its own statements and the rest belongs to 8 function literals inside it that branch (lines 1216, 1234, 1252, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1204}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f56c6714b23419a7743f7229044f9e8f42e238e1630f809b33d47bb4ebb3abf"}},{"ruleId":"D1","level":"warning","message":{"text":"Bucket.Bucket (cyclomatic 18): Bucket.Bucket has cyclomatic complexity 18 (threshold 15). Most of this is not in the body itself: 1 of the 18 points is its own statement and the rest belongs to 4 function literals inside it that branch (lines 61, 44, 118, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Bucket.tsx"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b025009c1f25eb4cd705730aabc8316b53f2f2d02a48335415c992ff735bc07"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene (cyclomatic 18): Scene has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"49cef8822ee6097f5cb2750a14e28e2eb6f07cc4ca82a0744d1e8255a731ab94"}},{"ruleId":"D1","level":"warning","message":{"text":"load (cyclomatic 18): load has cyclomatic complexity 18 (threshold 15). Of this number, 10 points are the body\u0027s own statements and 8 belong to 4 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3353}}}],"partialFingerprints":{"codehealthFindingId/v1":"e293bb5df642f50d65649ca3346fe3db9b5c25c1ea715de062371620eaa2e3a5"}},{"ruleId":"D1","level":"warning","message":{"text":"loadMaterial (cyclomatic 18): loadMaterial has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":1891}}}],"partialFingerprints":{"codehealthFindingId/v1":"290c1d4c275689cae389951ba0c3373ea3ef2637172b559c460947cf8306d1bb"}},{"ruleId":"D1","level":"warning","message":{"text":"updateZoomTarget (cyclomatic 18): updateZoomTarget has cyclomatic complexity 18 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 2 belong to 8 function items inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":1443}}}],"partialFingerprints":{"codehealthFindingId/v1":"33fc03cd15de7817bcda7b827589c8e98dc3c481615226c4e9ebd56e1f5a6803"}},{"ruleId":"D1","level":"warning","message":{"text":"GroundPrimitive (cyclomatic 18): GroundPrimitive has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPrimitive.js"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"44cfcb58f56fbe411cd70435de05881a3d97d1acdaed30ba4f80aac23bce4add"}},{"ruleId":"D1","level":"warning","message":{"text":"preload (cyclomatic 18): preload has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"b19e7bf82e3f78849fcdf43eaee34f32f0d35bcf60c32fb4a9de9632bdea4914"}},{"ruleId":"D1","level":"warning","message":{"text":"QuadraticRealPolynomial.QuadraticRealPolynomial.computeRealRoots (cyclomatic 17): QuadraticRealPolynomial.QuadraticRealPolynomial.computeRealRoots 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":"packages/core/Source/QuadraticRealPolynomial.js"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aad4f3892915b26bc876b116861d0ffbf127e84c50f01f5af8d924c360164b0"}},{"ruleId":"D1","level":"warning","message":{"text":"BoundingSphere.fromPoints (cyclomatic 17): BoundingSphere.fromPoints 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":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"0afcb8f7be2f537b2a5ce5153c3301b0a9f4098604528e16224b846e1e465f0d"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.GeometryPipeline.computeNormal (cyclomatic 17): GeometryPipeline.GeometryPipeline.computeNormal 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":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5224adcbc9567b181a5494a1c3239b1aeeb0e488a6445d576a7513ecb207b84"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.splitTriangle (cyclomatic 17): GeometryPipeline.splitTriangle has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1899}}}],"partialFingerprints":{"codehealthFindingId/v1":"132f37a3c930cc9760cb74b3a3f0251533a557efa437e93c9d04df573dfb8823"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineVolumeGeometryLibrary.PolylineVolumeGeometryLibrary.computePositions (cyclomatic 17): PolylineVolumeGeometryLibrary.PolylineVolumeGeometryLibrary.computePositions 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":"packages/core/Source/PolylineVolumeGeometryLibrary.js"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5fde2c6229b81da80d39a54e07d75ba588f4d67061a2f10786abbb0ec62113c"}},{"ruleId":"D1","level":"warning","message":{"text":"CorridorOutlineGeometry.combine (cyclomatic 17): CorridorOutlineGeometry.combine 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":"packages/core/Source/CorridorOutlineGeometry.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9794766ca3b95b8231d7e2133b67401d7e01a2d9cf5e2b5ef5a2b65c8a6dd0d5"}},{"ruleId":"D1","level":"warning","message":{"text":"OrthographicOffCenterFrustum.update (cyclomatic 17): OrthographicOffCenterFrustum.update has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrthographicOffCenterFrustum.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b75a3c848a73da7e392591b60b041d567a90d28920e7f1f9c851472a78c6b03d"}},{"ruleId":"D1","level":"warning","message":{"text":"MetadataClassProperty.validateScalar (cyclomatic 17): MetadataClassProperty.validateScalar has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataClassProperty.js"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"76ff1b2daac8c87f332c5fb4c47e7dc2b9f1d14df95add785d6960e3f1af462b"}},{"ruleId":"D1","level":"warning","message":{"text":"FrustumGeometry.FrustumGeometry.createGeometry (cyclomatic 17): FrustumGeometry.FrustumGeometry.createGeometry 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":"packages/engine/Source/Core/FrustumGeometry.js"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"012eaf52c42dc10741a040bd49cf796b15fc84cb63e77bd82a449118c5f936fb"}},{"ruleId":"D1","level":"warning","message":{"text":"MaterialPipelineStage.processMaterialUniforms (cyclomatic 17): MaterialPipelineStage.processMaterialUniforms has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/MaterialPipelineStage.js"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80a8f9e767743e8191aa3f64693b4f77dd1f093cc6d520137abd69dfa1032c5"}},{"ruleId":"D1","level":"warning","message":{"text":"PointCloudStylingPipelineStage.PointCloudStylingPipelineStage.process (cyclomatic 17): PointCloudStylingPipelineStage.PointCloudStylingPipelineStage.process has cyclomatic complexity 17 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/PointCloudStylingPipelineStage.js"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"283382623750906e9e752a690fb276e2aebc3872461c58ead40ae25b67a627e5"}},{"ruleId":"D1","level":"warning","message":{"text":"VectorGltf3DTileContent.applyStyle (cyclomatic 17): VectorGltf3DTileContent.applyStyle 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":"packages/engine/Source/Scene/VectorGltf3DTileContent.js"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"1513668e32a7692e83024b85113e0afa5c483e56d3f73e2e87063fcb68277767"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageryLayerCollection.ImageryLayerCollection.pickImageryLayerFeatures (cyclomatic 17): ImageryLayerCollection.ImageryLayerCollection.pickImageryLayerFeatures has cyclomatic complexity 17 (threshold 15). Of this number, 12 points are the body\u0027s own statements and 5 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayerCollection.js"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"77068f352e112c4de890d3a0996027a2794a1d408d7d8189d100c0667598fab0"}},{"ruleId":"D1","level":"warning","message":{"text":"PolylineGeometryUpdater.PolylineGeometryUpdater.createFillGeometryInstance (cyclomatic 17): PolylineGeometryUpdater.PolylineGeometryUpdater.createFillGeometryInstance 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":"packages/engine/Source/DataSources/PolylineGeometryUpdater.js"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"f83f2fc32ded6fc0d5a06b27f09fe5e8d78234844dedc4a26232da4689f74c7a"}},{"ruleId":"D1","level":"warning","message":{"text":"GeoJsonDataSource.load (cyclomatic 17): GeoJsonDataSource.load has cyclomatic complexity 17 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd66465f1a20df1c0eca82c60d9cce6d53ff1ea1d83becf44f3fe16b57a1009"}},{"ruleId":"D1","level":"warning","message":{"text":"OIT.executeTranslucentCommandsSortedMultipass (cyclomatic 17): OIT.executeTranslucentCommandsSortedMultipass 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":"packages/engine/Source/Scene/OIT.js"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd7f0012bb0661c123408614b0c9349ac23cb02c6ac0ae9ea0a5d8afdb881916"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.updateDerivedCommands (cyclomatic 17): Scene.updateDerivedCommands has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":1804}}}],"partialFingerprints":{"codehealthFindingId/v1":"c47b60cd194086d8e3a43b3d4f4cf41a17a6244c40a2797f4d4caa135acc47a5"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.Scene.updateHeight (cyclomatic 17): Scene.Scene.updateHeight has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 7 of the 17 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 4319, 4352, 4381, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":4309}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8238a9d8e4223e2728c101ccf6d6d0009640c7c93cb8a2cfe4f0e2db8a6a16f"}},{"ruleId":"D1","level":"warning","message":{"text":"Scene.Scene.render (cyclomatic 17): Scene.Scene.render has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":4629}}}],"partialFingerprints":{"codehealthFindingId/v1":"050c8b7a0d078a35960814499e97613a94c3cf9a6d4f2da97a39e106947798e9"}},{"ruleId":"D1","level":"warning","message":{"text":"createElevationBandMaterial.preprocess (cyclomatic 17): createElevationBandMaterial.preprocess 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":"packages/engine/Source/Scene/createElevationBandMaterial.js"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c666a83df695bdef2e108fbf077f7dec647975415e87ab34ff42588d9701513"}},{"ruleId":"D1","level":"warning","message":{"text":"main.viewer.screenSpaceEventHandler.setInputAction() (cyclomatic 17): main.viewer.screenSpaceEventHandler.setInputAction() has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/aec-snapping/main.js"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a30b12a1f830f4d46eec920274e86e28d578f04027722cc4941bbc92a9c0ab"}},{"ruleId":"D1","level":"warning","message":{"text":"ToolCallDisplay.ToolCallDisplay (cyclomatic 17): ToolCallDisplay.ToolCallDisplay has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ToolCallDisplay.tsx"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"546398c1b866818eebbfed120675306ed466adf4eb0dd2d6128f4a4e2ea384a5"}},{"ruleId":"D1","level":"warning","message":{"text":"setView (cyclomatic 17): setView has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":1490}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee006f625f656dd555c2f55fd9b2be914fb4125dbb72adeb2a2b5d83ab8d6b3"}},{"ruleId":"D1","level":"warning","message":{"text":"flyTo (cyclomatic 17): flyTo has cyclomatic complexity 17 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":3427}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7bd2fc81aaa9b8ea5f612656095470584518100480962c5cc8c4b32a4176eb1"}},{"ruleId":"D1","level":"warning","message":{"text":"createTileUniformMap (cyclomatic 17): createTileUniformMap has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 2 of the 17 points are its own statements and the rest belongs to 65 function items inside it that branch (u_clippingPlanes, u_clippingPlanesMatrix, u_vectorSegmentTexture, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1909}}}],"partialFingerprints":{"codehealthFindingId/v1":"23653384b60eb64320fe8b81a0fb5e0a133cc710dced2189fca080ee65b89fe4"}},{"ruleId":"D1","level":"warning","message":{"text":"constructor (cyclomatic 17): constructor has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions. This is NOT this file\u0027s highest cyclomatic complexity: equalsEpsilon (cyclomatic 20) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix4.js"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"d642dde46d8218e21031db10da7e157492fe2410354b6dca088d6fb5d7886004"}},{"ruleId":"D1","level":"warning","message":{"text":"parse (cyclomatic 17): parse 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":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":3183}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8b67d9ec181963903a49b26178d82edc3c550f9ea3a446aa52d226ee1fdf035"}},{"ruleId":"D1","level":"warning","message":{"text":"Primitive (cyclomatic 17): Primitive has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fc584977f2239247634f1894a8c71537bf88c9e5d3a48fd1c0031b70a1281e5"}},{"ruleId":"D1","level":"warning","message":{"text":"zoomToOrFly (cyclomatic 17): zoomToOrFly has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 2 of the 17 points are its own statements and the rest belongs to 8 function items inside it that branch ((anonymous), (anonymous)::(anonymous), (anonymous)::(anonymous), \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"39169dde90359a71753a48baad8894a97d7ef9bbcaf6b4fd0c1b7d7babcd2679"}},{"ruleId":"D1","level":"warning","message":{"text":"Context (cyclomatic 17): Context has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Context.js"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e7458d3a535a134769ac4643fa8f0d5a6238a83377fcb45de64d6056f7af51"}},{"ruleId":"D1","level":"warning","message":{"text":"merge (cyclomatic 17): merge 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":"packages/engine/Source/DataSources/Entity.js"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"027345017b3876f37108eb799f69765ec9778cef2e0be904102f40a4d50a939b"}},{"ruleId":"D1","level":"warning","message":{"text":"packCreateGeometryResults (cyclomatic 17): packCreateGeometryResults 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":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6ff721661f2a9a3bb47e23323cae15b81c06846652f9ca2370ac5dba424ffc"}},{"ruleId":"D1","level":"warning","message":{"text":"Rectangle.intersection (cyclomatic 16): Rectangle.intersection has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Rectangle.js"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"86484e9466f81fac2e0a2808a2d37e552bcaec2738f6a1b45c53b33682ed94a5"}},{"ruleId":"D1","level":"warning","message":{"text":"EllipseGeometryLibrary.EllipseGeometryLibrary.computeEllipsePositions (cyclomatic 16): EllipseGeometryLibrary.EllipseGeometryLibrary.computeEllipsePositions has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometryLibrary.js"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a8481eb4dbe72b6f4b25fdd789e780e27ea07bca0e158a96ba768b4ce266f5"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryPipeline.GeometryPipeline.fitToUnsignedShortIndices (cyclomatic 16): GeometryPipeline.GeometryPipeline.fitToUnsignedShortIndices has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"056d4c4c55410657bf6a719af02d5c260d15995c6634712ae9db97ed829dbb97"}},{"ruleId":"D1","level":"warning","message":{"text":"PolygonPipeline.PolygonPipeline.computeSubdivision (cyclomatic 16): PolygonPipeline.PolygonPipeline.computeSubdivision has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This shape REPEATS in the file: one other method here (PolygonPipeline.PolygonPipeline.computeRhumbLineSubdivision) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonPipeline.js"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f2d03578df0748f4407a269ab9ddcf6fffa0fee4b9961dcb8338811856b481"}},{"ruleId":"D1","level":"warning","message":{"text":"PolygonPipeline.PolygonPipeline.computeRhumbLineSubdivision (cyclomatic 16): PolygonPipeline.PolygonPipeline.computeRhumbLineSubdivision has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This shape REPEATS in the file: one other method here (PolygonPipeline.PolygonPipeline.computeSubdivision) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonPipeline.js"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"604fd55b9bcf7dc2e07dce387c8048e488a60320252c1aa253633289b532e673"}},{"ruleId":"D1","level":"warning","message":{"text":"RectangleGeometry.calculateAttributesWall (cyclomatic 16): RectangleGeometry.calculateAttributesWall has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d9dfc7389817b1c88f3900e74bc3bd110bfbddedbe19af84a031d4aeac8d09c"}},{"ruleId":"D1","level":"warning","message":{"text":"TimeIntervalCollection.TimeIntervalCollection.intersect (cyclomatic 16): TimeIntervalCollection.TimeIntervalCollection.intersect has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"838dcbeed328877abebfb66facf282ba7dcc913bc61ca822a19c6d5504c43261"}},{"ruleId":"D1","level":"warning","message":{"text":"Fullscreen.Fullscreen.supportsFullscreen (cyclomatic 16): Fullscreen.Fullscreen.supportsFullscreen has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Fullscreen.js"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"298cbdbd3bfd93363d5f5321718d42ac8033260863ec7590a86b1c5d6061f0e7"}},{"ruleId":"D1","level":"warning","message":{"text":"CartographicGeocoderService.CartographicGeocoderService.geocode (cyclomatic 16): CartographicGeocoderService.CartographicGeocoderService.geocode has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CartographicGeocoderService.js"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5deef37c1cb4fad4d0d16eaae4b6eb02a956cde52a9e370289892a05a8b08de"}},{"ruleId":"D1","level":"warning","message":{"text":"Texture.Texture.copyFrom (cyclomatic 16): Texture.Texture.copyFrom has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4bec7a55c1509a84f046556df4e9e97960b698e7921652b74aa700c24777516"}},{"ruleId":"D1","level":"warning","message":{"text":"QuantizedMeshTerrainData.QuantizedMeshTerrainData.upsample (cyclomatic 16): QuantizedMeshTerrainData.QuantizedMeshTerrainData.upsample has cyclomatic complexity 16 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/QuantizedMeshTerrainData.js"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ab92189a92ad91ece8ace4cf61507fbf45af68650bd405d4aa6302869209d8"}},{"ruleId":"D1","level":"warning","message":{"text":"CesiumTerrainProvider.createQuantizedMeshTerrainData (cyclomatic 16): CesiumTerrainProvider.createQuantizedMeshTerrainData has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"8133775ed7204151fe351769f628913c065e362d5ecc27edebc017794cada7de"}},{"ruleId":"D1","level":"warning","message":{"text":"VertexArray.interleaveAttributes (cyclomatic 16): VertexArray.interleaveAttributes has cyclomatic complexity 16 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7f864cc227d97c08402ca4a92496c606da8bdc1765200b7fc7ab7494db340b"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderState.RenderState.partialApply (cyclomatic 16): RenderState.RenderState.partialApply has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd4a5785748eeaeb0dd3e32a407553a7601caa73ace258d689192c8c0d6c5da3"}},{"ruleId":"D1","level":"warning","message":{"text":"ShaderProgram.createAndLinkProgram (cyclomatic 16): ShaderProgram.createAndLinkProgram has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/ShaderProgram.js"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"254cec87fe452cffe6f7750c580ebc3d8b77c03a178d2eb4a7c3d5bcfaa85038"}},{"ruleId":"D1","level":"warning","message":{"text":"Primitive.recomputeBoundingSpheres (cyclomatic 16): Primitive.recomputeBoundingSpheres has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1376}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df35f567ef4142e7e00e1a10ae81838730cf13921c92554d31c7291accd60fa"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassificationPrimitive.updateAndQueueCommands (cyclomatic 16): ClassificationPrimitive.updateAndQueueCommands has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClassificationPrimitive.js"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3cba8019cd696338b99421efa22f22ee0e5b670f76435127323ca8f45415c3b"}},{"ruleId":"D1","level":"warning","message":{"text":"DynamicGeometryUpdater.DynamicGeometryUpdater.getBoundingSphere (cyclomatic 16): DynamicGeometryUpdater.DynamicGeometryUpdater.getBoundingSphere has cyclomatic complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/DynamicGeometryUpdater.js"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc11063986c253246f7898e61d4bd166c0ed8ca21959a615dcdfee45fdd6235f"}},{"ruleId":"D1","level":"warning","message":{"text":"Expression.Node.getVariables (cyclomatic 16): Expression.Node.getVariables has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":2169}}}],"partialFingerprints":{"codehealthFindingId/v1":"937f6470c17fdb40107e91e9a4186023765358e8d84e955169560aeb665d68c8"}},{"ruleId":"D1","level":"warning","message":{"text":"Geometry3DTileContent.initialize (cyclomatic 16): Geometry3DTileContent.initialize has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Geometry3DTileContent.js"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d92eec207fb44cabed5cea88c7f6b98e320b8f5994286dba8dd4267131a2940"}},{"ruleId":"D1","level":"warning","message":{"text":"DynamicEnvironmentMapManager.DynamicEnvironmentMapManager.update (cyclomatic 16): DynamicEnvironmentMapManager.DynamicEnvironmentMapManager.update has cyclomatic complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/DynamicEnvironmentMapManager.js"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06ea4cfbed348c0358dca5237081c5c85410118e17b91e4d53a1bdd63f2db15"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneTransforms.SceneTransforms.worldWithEyeOffsetToWindowCoordinates (cyclomatic 16): SceneTransforms.SceneTransforms.worldWithEyeOffsetToWindowCoordinates has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/SceneTransforms.js"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"513e7bec45ccf45f35aaea03fbaa7fd7d82cbcf6d26f027f2a8ee9a82a6bc7c0"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageBasedLightingPipelineStage.ImageBasedLightingPipelineStage.process (cyclomatic 16): ImageBasedLightingPipelineStage.ImageBasedLightingPipelineStage.process has cyclomatic complexity 16 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ImageBasedLightingPipelineStage.js"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"d88e68f9a23c31484cf8a032f36a991fe2f696850adde58097e84289d702018b"}},{"ruleId":"D1","level":"warning","message":{"text":"TileImagery.TileImagery.processStateMachine (cyclomatic 16): TileImagery.TileImagery.processStateMachine has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TileImagery.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c5eaffc6cd855d52c2b175782d4b6c6ca507303808ff75d053a94d033f2007e"}},{"ruleId":"D1","level":"warning","message":{"text":"Model.Model.destroy (cyclomatic 16): Model.Model.destroy has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":3095}}}],"partialFingerprints":{"codehealthFindingId/v1":"73461b790922603411d62fa4e5d14feac50491639530b829fd169aa6e328adfd"}},{"ruleId":"D1","level":"warning","message":{"text":"SampledProperty.SampledProperty.equals (cyclomatic 16): SampledProperty.SampledProperty.equals has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/SampledProperty.js"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"25b8f1aa32cb7fae9373b0a1578d7f718f3267334d3c8c6ad6e51f8794ae6c43"}},{"ruleId":"D1","level":"warning","message":{"text":"GeometryVisualizer.GeometryVisualizer._insertUpdaterIntoBatch (cyclomatic 16): GeometryVisualizer.GeometryVisualizer._insertUpdaterIntoBatch has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeometryVisualizer.js"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"60163675421c304a418e887fecf9dc54d93f10bad204a6e5e33a1c38949d2fe7"}},{"ruleId":"D1","level":"warning","message":{"text":"KmlDataSource.computeFinalStyle (cyclomatic 16): KmlDataSource.computeFinalStyle has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: KmlDataSource.processScreenOverlay (cyclomatic 32) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1118}}}],"partialFingerprints":{"codehealthFindingId/v1":"2398556292fa96b9a5e17d836a04b97061df2f74b456a2b01615efbd612c5981"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedContext.SharedContext.createSceneContext (cyclomatic 16): SharedContext.SharedContext.createSceneContext has cyclomatic complexity 16 (threshold 15). Of this number, 11 points are the body\u0027s own statements and 5 belong to 2 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/SharedContext.js"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"911f84a40821fd020ca17227dd9207752a1f59ea0a52a6a5f46907e251c2f203"}},{"ruleId":"D1","level":"warning","message":{"text":"ScreenSpaceZoomCameraController.update (cyclomatic 16): ScreenSpaceZoomCameraController.update has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"6198f7b35634af90386f1b21841f77ac532cbf3108e046d0a123c18138432433"}},{"ruleId":"D1","level":"warning","message":{"text":"Picking.Picking.pickPositionWorldCoordinates (cyclomatic 16): Picking.Picking.pickPositionWorldCoordinates has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Picking.js"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb06ec7e53f956162d42d1376e8d928833b5c71dbb39fbc850adecc74bcb8fa6"}},{"ruleId":"D1","level":"warning","message":{"text":"PostProcessStage.createSelectedTexture (cyclomatic 16): PostProcessStage.createSelectedTexture has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStage.js"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"e775fc19a14e8c0903243d34cbfda99fb2e8e3743dedddcf56470a8fd756de16"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobeSurfaceTile.processTerrainStateMachine (cyclomatic 16): GlobeSurfaceTile.processTerrainStateMachine has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTile.js"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"568ca6efec50032fd2b752dfd90fb6aaff8bd2d21e89478d13719ae2b65ca9fd"}},{"ruleId":"D1","level":"warning","message":{"text":"I3SDataProvider.addLayers (cyclomatic 16): I3SDataProvider.addLayers has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SDataProvider.js"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0835924c93fced5032714fe9d26e6f27a04e36aaca9570ccb4fc8abe0e353bc"}},{"ruleId":"D1","level":"warning","message":{"text":"decodeMVT.decodeValue (cyclomatic 16): decodeMVT.decodeValue has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/decodeMVT.js"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada8939f8dee81335346f38899b3143382add262b8d83859a98cc68f3fa237dc"}},{"ruleId":"D1","level":"warning","message":{"text":"Sun.Sun.update (cyclomatic 16): Sun.Sun.update has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Sun.js"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8962e33f9208a1c7bf5d280f403d3fdf98ded76379dd2d2f5ca0e9084b65b86b"}},{"ruleId":"D1","level":"warning","message":{"text":"decodeGoogleEarthEnterprisePacket.processMetadata (cyclomatic 16): decodeGoogleEarthEnterprisePacket.processMetadata has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeGoogleEarthEnterprisePacket.js"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d5ddc91a0a0ee2915470131742f983c6a1d31c4c786a4c963cfd17af89e8054"}},{"ruleId":"D1","level":"warning","message":{"text":"main.viewer.screenSpaceEventHandler.setInputAction() (cyclomatic 16): main.viewer.screenSpaceEventHandler.setInputAction() has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/hybrid-snapping-dev/main.js"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d82ab65ab2b29ffc7381073731e9bb6a483fdd82848d914f7487c0f51383687"}},{"ruleId":"D1","level":"warning","message":{"text":"DiffMatcher.lineTrimmedMatch (cyclomatic 16): DiffMatcher.lineTrimmedMatch has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37729fe8fb049cb44e8a0fe068a13826d3f51a455c460d865ae87a3476c7d05"}},{"ruleId":"D1","level":"warning","message":{"text":"DiffMatcher.contextBasedMatch (cyclomatic 16): DiffMatcher.contextBasedMatch has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b5c0cb0a4d86862b085f46e7a0d9d317c05650ceb02ac617203b0892cc2397"}},{"ruleId":"D1","level":"warning","message":{"text":"toolRegistry.createApplyDiffHandler (cyclomatic 16): toolRegistry.createApplyDiffHandler has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 1 of the 16 points is its own statement and the rest belongs to one function literal inside it that branches (line 74). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/tools/toolRegistry.ts"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c3e30a47671cce49caad7505484a5ff8800fc1090847f95b305f0ccc496feb"}},{"ruleId":"D1","level":"warning","message":{"text":"Viewer.enableVRUI (cyclomatic 16): Viewer.enableVRUI has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"d217407a486785f0580467a06f3925a8e0d0defa05ca8fae972d72a87183bac6"}},{"ruleId":"D1","level":"warning","message":{"text":"getIconHref (cyclomatic 16): getIconHref has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0ab444317ef209a3a099cd195cbb2a76dfb65b649f7515e6e791a3a6d46686"}},{"ruleId":"D1","level":"warning","message":{"text":"_onLayerAdded (cyclomatic 16): _onLayerAdded has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 4 of the 16 points are its own statements and the rest belongs to 3 function items inside it that branch (reloadFunction::(anonymous), (anonymous), reloadFunction). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca987ccc332e660ce110fbc0ff7e760fc623b38db36d46ef674100cb88c35f6"}},{"ruleId":"D1","level":"warning","message":{"text":"adjustHeightForTerrain (cyclomatic 16): adjustHeightForTerrain has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2911}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75cd5bf063a81c50dfca2f83354ba5d08fb5276cb3825926e1162621aa221a6"}},{"ruleId":"D1","level":"warning","message":{"text":"initializeMaterial (cyclomatic 16): initializeMaterial has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"559a952c1d54d374546f76c118613bf991921906863db79d2081092c7d97042a"}},{"ruleId":"D1","level":"warning","message":{"text":"fromJulianDateArray (cyclomatic 16): fromJulianDateArray has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"187a1f23f15bd7d62e1dd0457d80e89bf9ec33b27d48c7eaf846fd027d7ef025"}},{"ruleId":"D1","level":"warning","message":{"text":"getUniformValueGetterAndSetter (cyclomatic 16): getUniformValueGetterAndSetter has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 6 of the 16 points are its own statements and the rest belongs to 2 function items inside it that branch (set, get). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStage.js"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdd0e457410c913492169e789029f985596470f9b4286da40617aef408e7eb83"}},{"ruleId":"D1","level":"warning","message":{"text":"localFrameToFixedFrameGenerator::resultat (cyclomatic 16): localFrameToFixedFrameGenerator::resultat has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/FixedFrameTransforms.js"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e858aa8535c75403c2cd12919b049e5b939fb6c7995f97b5c86eaa0fd42607"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonGeometry.computeAttributes (cognitive 209): PolygonGeometry.computeAttributes has cognitive complexity 209 (threshold 15). Drivers by points: if/else 51 (181 pts), boolean chains 14, ternaries 6 (12 pts), loops 1 (2 pts) (nesting depth added 137). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d57cf91f604a33c47ae9a53e154ebd67372b784b97810be7a28e3da96ec7d31"}},{"ruleId":"D2","level":"warning","message":{"text":"buildVectorGltfFromMVT.buildVectorGltfFromMVT (cognitive 200): buildVectorGltfFromMVT.buildVectorGltfFromMVT has cognitive complexity 200 (threshold 15). Drivers by points: if/else 49 (98 pts), loops 22 (74 pts), ternaries 6 (20 pts), boolean chains 8 (nesting depth added 115). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/buildVectorGltfFromMVT.js"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"257088d2b4a7239e3b7a4beb02b8891fe7119e659d8df50512a18d1921d518e2"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 185): update has cognitive complexity 185 (threshold 15). Drivers by points: if/else 61 (114 pts), boolean chains 30, loops 8 (22 pts), ternaries 7 (19 pts) (nesting depth added 79). Of this number, 184 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":1569}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d863976d350939b1ec12b2d90b80f25a4164557471a566a586538813431656"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 152): update has cognitive complexity 152 (threshold 15). Drivers by points: if/else 45 (100 pts), boolean chains 16, loops 5 (15 pts), ternaries 4 (15 pts), match/switch 1 (5 pts), other 1 (nesting depth added 80). Of this number, 98 points are the body\u0027s own statements and 54 belong to 7 function items inside it that branch. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GaussianSplatPrimitive.js"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"8278100c3d67dab9d07a40d053e192165c3c9ae6761f3ff64334e4d1b897dfe3"}},{"ruleId":"D2","level":"warning","message":{"text":"addDrawCommandsForTile (cognitive 147): addDrawCommandsForTile has cognitive complexity 147 (threshold 15). Drivers by points: if/else 43 (80 pts), boolean chains 41, loops 6 (12 pts), ternaries 6 (11 pts), other 3 (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":2510}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c53e5e582e5d1f15c8a6bbf9fb3e403d9b9b978d3430f0a9b9b462dd68fd04"}},{"ruleId":"D2","level":"warning","message":{"text":"ChatPanel.ChatPanel (cognitive 135): ChatPanel.ChatPanel has cognitive complexity 135 (threshold 15). Drivers by points: if/else 35 (44 pts), ternaries 18 (41 pts), boolean chains 35, loops 4 (7 pts), error handling 3 (6 pts), match/switch 1 (2 pts) (nesting depth added 39). Most of this is not in the body itself: 9 of the 135 points are its own statements and the rest belongs to 19 function literals inside it that branch (lines 297, 437, 457, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ChatPanel.tsx"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"77de23576849fac3e920ed0e6e00d62823fc939dd9887966e4254f92b1a0c160"}},{"ruleId":"D2","level":"warning","message":{"text":"PathVisualizer.PolylineUpdater.updateObject (cognitive 114): PathVisualizer.PolylineUpdater.updateObject has cognitive complexity 114 (threshold 15). Drivers by points: if/else 26 (73 pts), loops 9 (30 pts), boolean chains 9, ternaries 1 (2 pts) (nesting depth added 69). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb60debbaf1c9e2519500124c04e593b6ad1e8ed0b5bc8c99a1ee58b3e3fc5fe"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeSurfaceShaderSet.getShaderProgram (cognitive 111): GlobeSurfaceShaderSet.getShaderProgram has cognitive complexity 111 (threshold 15). Drivers by points: if/else 49 (99 pts), boolean chains 10, loops 1 (2 pts) (nesting depth added 51). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceShaderSet.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"21635a2c90a60366b356015a6febb778f4c51655c19580086b4652a91116362f"}},{"ruleId":"D2","level":"warning","message":{"text":"EllipsoidGeometry.EllipsoidGeometry.createGeometry (cognitive 109): EllipsoidGeometry.EllipsoidGeometry.createGeometry has cognitive complexity 109 (threshold 15). Drivers by points: if/else 32 (64 pts), loops 17 (32 pts), boolean chains 7, ternaries 5 (6 pts) (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipsoidGeometry.js"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24ef4229771f8e44906c70a13a26a837653a2d26eca9013bfcc5006a19573e6"}},{"ruleId":"D2","level":"warning","message":{"text":"constructExtrudedRectangle (cognitive 106): constructExtrudedRectangle has cognitive complexity 106 (threshold 15). Drivers by points: if/else 40 (73 pts), loops 11 (18 pts), ternaries 10 (14 pts), boolean chains 1 (nesting depth added 44). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d50f1824877fdabbe562e6f33d43904a1564fb48833502019a476fc48e7b9a"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 106): update has cognitive complexity 106 (threshold 15). Drivers by points: if/else 31 (49 pts), boolean chains 22, loops 7 (21 pts), ternaries 5 (14 pts) (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointPrimitiveCollection.js"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"6779b67f1f03cbe7112cac418d40fe4f78b06e658b8aa0e7ff2450b252a7f1ce"}},{"ruleId":"D2","level":"warning","message":{"text":"useToolChainExecution.useToolChainExecution (cognitive 104): useToolChainExecution.useToolChainExecution has cognitive complexity 104 (threshold 15). Drivers by points: if/else 30 (68 pts), ternaries 8 (19 pts), boolean chains 8, error handling 3 (6 pts), loops 2 (3 pts) (nesting depth added 53). Most of this is not in the body itself: 0 of the 104 points are its own statements and the rest belongs to 8 function literals inside it that branch (lines 170, 110, 77, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"949dd83a76dccab1e32605d3c89c5980a23e5c4e8a14fab6cff6974d8eabc178"}},{"ruleId":"D2","level":"warning","message":{"text":"fromIso8601 (cognitive 103): fromIso8601 has cognitive complexity 103 (threshold 15). Drivers by points: if/else 32 (66 pts), boolean chains 24, loops 6, ternaries 3 (5 pts), match/switch 1 (2 pts) (nesting depth added 37). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/JulianDate.js"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"2914797565155b0ac5d419714c92162e0c5d341bcfae53d1103ae46b2e875f72"}},{"ruleId":"D2","level":"warning","message":{"text":"AnthropicClient.processSSEStream (cognitive 102): AnthropicClient.processSSEStream has cognitive complexity 102 (threshold 15). Drivers by points: if/else 17 (57 pts), ternaries 3 (18 pts), error handling 4 (13 pts), boolean chains 11, loops 2 (3 pts) (nesting depth added 65). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/AnthropicClient.ts"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"389f3d7ee56a1e838a0e267097aeaf1c5cffadbb5d9e93725bc746d9cbe658fe"}},{"ruleId":"D2","level":"warning","message":{"text":"VertexAIClient.processClaudeSSEStream (cognitive 102): VertexAIClient.processClaudeSSEStream has cognitive complexity 102 (threshold 15). Drivers by points: if/else 17 (57 pts), ternaries 3 (18 pts), error handling 4 (13 pts), boolean chains 11, loops 2 (3 pts) (nesting depth added 65). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"61606dcd91526de2d5badfccfe88127455dee69de424b383948749e394071861"}},{"ruleId":"D2","level":"warning","message":{"text":"executeCommands (cognitive 100): executeCommands has cognitive complexity 100 (threshold 15). Drivers by points: if/else 38 (78 pts), boolean chains 11, ternaries 3 (8 pts), loops 3 (nesting depth added 45). Of this number, 98 points are the body\u0027s own statements and 2 belong to 2 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":2779}}}],"partialFingerprints":{"codehealthFindingId/v1":"93acfa44eca99f4f1a23e94c616e33723e88dd2cdf13d57acdf14fb01efee78f"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderState (cognitive 99): RenderState has cognitive complexity 99 (threshold 15). Drivers by points: other 57, if/else 28 (32 pts), boolean chains 9, ternaries 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3e7673f3faf140d7252594485a2fa015087d63f5a9396f180484387705658e4"}},{"ruleId":"D2","level":"warning","message":{"text":"Expression.Node.getShaderExpression (cognitive 98): Expression.Node.getShaderExpression has cognitive complexity 98 (threshold 15). Drivers by points: if/else 49 (86 pts), boolean chains 7, loops 1 (2 pts), ternaries 1 (2 pts), match/switch 1 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1906}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f46a01d1f89d61b550a810248ae4e773adde247e893abc0090a67258b273ec"}},{"ruleId":"D2","level":"warning","message":{"text":"createElevationBandMaterial.createLayeredEntries (cognitive 97): createElevationBandMaterial.createLayeredEntries has cognitive complexity 97 (threshold 15). Drivers by points: if/else 34 (64 pts), ternaries 6 (18 pts), boolean chains 12, loops 2 (3 pts) (nesting depth added 43). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/createElevationBandMaterial.js"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4bc8f29d17a99c84f1a37217af6770be479acbed8a20ac09108b3f7b5ad3b35"}},{"ruleId":"D2","level":"warning","message":{"text":"renderBufferPolylineCollection (cognitive 96): renderBufferPolylineCollection has cognitive complexity 96 (threshold 15). Drivers by points: if/else 23 (44 pts), loops 8 (24 pts), ternaries 10 (23 pts), boolean chains 5 (nesting depth added 50). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolylineCollection.js"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f6169a6dced2c2b0fbdf7417b82687894b05c5d591ec39af02fd19eaf20ba5d"}},{"ruleId":"D2","level":"warning","message":{"text":"handleZoom (cognitive 95): handleZoom has cognitive complexity 95 (threshold 15). Drivers by points: if/else 34 (70 pts), boolean chains 17, ternaries 2 (7 pts), other 1 (nesting depth added 41). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc8f69a15d2a5ccc21a3ae2d3c1763ee673070ceb2a368686a4e64a2e5b3ff8"}},{"ruleId":"D2","level":"warning","message":{"text":"Viewer (cognitive 95): Viewer has cognitive complexity 95 (threshold 15). Drivers by points: if/else 40 (55 pts), boolean chains 23, ternaries 5 (9 pts), other 5, error handling 1 (2 pts), loops 1 (nesting depth added 20). Of this number, 77 points are the body\u0027s own statements and 18 belong to 6 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"8481a736c9db4284158a7da430c44142e85b7645a500667ca2a8d21f0a4b6498"}},{"ruleId":"D2","level":"warning","message":{"text":"HeightmapTessellator.HeightmapTessellator.computeVertices (cognitive 93): HeightmapTessellator.HeightmapTessellator.computeVertices has cognitive complexity 93 (threshold 15). Drivers by points: if/else 38 (70 pts), loops 5 (14 pts), boolean chains 6, ternaries 3 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/HeightmapTessellator.js"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20e3a6a7ad76b89009f742782c1e0e996eab57564a201b5a5ca0a02f532d363"}},{"ruleId":"D2","level":"warning","message":{"text":"processNetworkLink (cognitive 93): processNetworkLink has cognitive complexity 93 (threshold 15). Drivers by points: if/else 22 (68 pts), error handling 2 (9 pts), other 6, ternaries 1 (4 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 58). Of this number, 33 points are the body\u0027s own statements and 60 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2998}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde5e97d200509da2e5fa7e0c4b4f9d295e2f61e924b89779f6b9a4b98d5aa65"}},{"ruleId":"D2","level":"warning","message":{"text":"EdgeVisibilityPipelineStage.extractVisibleEdges (cognitive 84): EdgeVisibilityPipelineStage.extractVisibleEdges has cognitive complexity 84 (threshold 15). Drivers by points: if/else 18 (52 pts), ternaries 5 (13 pts), loops 4 (10 pts), boolean chains 9 (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"2080e8edc1ba31d1533803c073439bdac07de9ea3b467e77f80247a21bb278ce"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTilesInspectorViewModel (cognitive 84): Cesium3DTilesInspectorViewModel has cognitive complexity 84 (threshold 15). Drivers by points: if/else 55 (75 pts), ternaries 2 (6 pts), boolean chains 2, loops 1 (nesting depth added 24). Most of this is not in the body itself: 1 of the 84 points is its own statement and the rest belongs to 67 function items inside it that branch (set::(anonymous), set, set, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspectorViewModel.js"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"0439b5061afc30de7ac7bb95ca205fa03d64414e4634721d27f7b65a7ba6de28"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticGeometryColorBatch.Batch.update (cognitive 83): StaticGeometryColorBatch.Batch.update has cognitive complexity 83 (threshold 15). Drivers by points: if/else 25 (70 pts), boolean chains 11, loops 1 (2 pts) (nesting depth added 46). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryColorBatch.js"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c227422c3662933658c1962230f2ad68f68003b02a9ae87baeb0fb92b1cd1c"}},{"ruleId":"D2","level":"warning","message":{"text":"KmlDataSource.processStyles (cognitive 83): KmlDataSource.processStyles has cognitive complexity 83 (threshold 15). Drivers by points: if/else 17 (71 pts), loops 4 (9 pts), boolean chains 3 (nesting depth added 59). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"d596f8b0cedc7a71fd9c60d3e51e6506ca94bc669a0f89efb030a3ee2f6e112f"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineCollection.PolylineCollection.update (cognitive 82): PolylineCollection.PolylineCollection.update has cognitive complexity 82 (threshold 15). Drivers by points: if/else 20 (57 pts), loops 4 (11 pts), boolean chains 8, ternaries 1 (6 pts) (nesting depth added 49). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"e64a1889351b3879c48f2761fc130ec3ae436742eb04eea126ffa603315b2c51"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineGeometry.PolylineGeometry.createGeometry (cognitive 79): PolylineGeometry.PolylineGeometry.createGeometry has cognitive complexity 79 (threshold 15). Drivers by points: if/else 22 (39 pts), loops 7 (20 pts), ternaries 6 (13 pts), boolean chains 7 (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineGeometry.js"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"0950e9613289487b67bbaf54b8fbe6c329215ded31ec193fa314b693a12eb925"}},{"ruleId":"D2","level":"warning","message":{"text":"createCommandLists (cognitive 79): createCommandLists has cognitive complexity 79 (threshold 15). Drivers by points: if/else 15 (46 pts), ternaries 4 (20 pts), loops 4 (10 pts), boolean chains 3 (nesting depth added 53). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"a77d924178aa91adebabcb7c92e5ab0583ff62298e9ef0a2810778f20d8d9d99"}},{"ruleId":"D2","level":"warning","message":{"text":"PointCloud.createShaders (cognitive 78): PointCloud.createShaders has cognitive complexity 78 (threshold 15). Drivers by points: if/else 55 (63 pts), boolean chains 11, loops 3, error handling 1 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"23944d1882c3a575ec0eb48c7ee2c35de8363d05284d254934e917c7708ea5d9"}},{"ruleId":"D2","level":"warning","message":{"text":"QuadtreePrimitive.updateHeights (cognitive 77): QuadtreePrimitive.updateHeights has cognitive complexity 77 (threshold 15). Drivers by points: if/else 19 (66 pts), boolean chains 4, loops 3 (4 pts), ternaries 1 (3 pts) (nesting depth added 50). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"681a597bebc4a41e0ac9fdef5c1d8a979282bcccc6c4ad498f178d34967aec94"}},{"ruleId":"D2","level":"warning","message":{"text":"subSampleSampledProperty (cognitive 77): subSampleSampledProperty has cognitive complexity 77 (threshold 15). Drivers by points: if/else 26 (66 pts), boolean chains 10, loops 1 (nesting depth added 40). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25efafcd09371ffee7ab745e46b464c6042e1e56cc9aecb4164269b7bfafe8a"}},{"ruleId":"D2","level":"warning","message":{"text":"write (cognitive 75): write has cognitive complexity 75 (threshold 15). Drivers by points: if/else 16 (45 pts), ternaries 5 (14 pts), boolean chains 10, loops 3 (6 pts) (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7ee7e869bdc70868165baca27b3985c1a16fa6ef93155e769222c25edb8497"}},{"ruleId":"D2","level":"warning","message":{"text":"EllipseGeometry.computeTopBottomAttributes (cognitive 74): EllipseGeometry.computeTopBottomAttributes has cognitive complexity 74 (threshold 15). Drivers by points: if/else 24 (57 pts), ternaries 8 (10 pts), boolean chains 4, loops 2 (3 pts) (nesting depth added 36). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d10f7c561edcda8f58de6556a327c163d52c75381a6294a2beecf5e3b66df66"}},{"ruleId":"D2","level":"warning","message":{"text":"EntityCluster.createDeclutterCallback (cognitive 73): EntityCluster.createDeclutterCallback has cognitive complexity 73 (threshold 15). Drivers by points: if/else 24 (45 pts), loops 7 (23 pts), boolean chains 5 (nesting depth added 37). Most of this is not in the body itself: 0 of the 73 points are its own statements and the rest belongs to one function literal inside it that branches (line 226). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityCluster.js"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0643d3367c77169e6deb7250dfc918c36598831f48c5a1bb7ad3aeb9c8c271"}},{"ruleId":"D2","level":"warning","message":{"text":"CesiumViewer.main (cognitive 71): CesiumViewer.main has cognitive complexity 71 (threshold 15). Drivers by points: if/else 29 (42 pts), ternaries 6 (18 pts), boolean chains 7, error handling 2 (4 pts) (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Apps/CesiumViewer/CesiumViewer.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"51ed62034640bd919c234ba768c0ac334d04fd969ac6bcfd655aa33ff9adab70"}},{"ruleId":"D2","level":"warning","message":{"text":"Vector3DTilePoints.Vector3DTilePoints.applyStyle (cognitive 71): Vector3DTilePoints.Vector3DTilePoints.applyStyle has cognitive complexity 71 (threshold 15). Drivers by points: if/else 38 (70 pts), loops 1 (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTilePoints.js"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"700c4d1178a94bbb03f2ad9e7fc8ff82b8b13e5d368bb58b11a9bf25d30034cb"}},{"ruleId":"D2","level":"warning","message":{"text":"createQuadEdgeGeometry (cognitive 71): createQuadEdgeGeometry has cognitive complexity 71 (threshold 15). Drivers by points: ternaries 17 (25 pts), loops 8 (22 pts), if/else 15 (20 pts), boolean chains 4 (nesting depth added 27). Of this number, 61 points are the body\u0027s own statements and 10 belong to 4 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff14e0631f984ccf3da666325248de39d00f1fa10be24885789cd05f60074992"}},{"ruleId":"D2","level":"warning","message":{"text":"splitLongitudePolyline (cognitive 69): splitLongitudePolyline has cognitive complexity 69 (threshold 15). Drivers by points: loops 10 (33 pts), if/else 12 (28 pts), ternaries 4 (8 pts) (nesting depth added 43). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2933}}}],"partialFingerprints":{"codehealthFindingId/v1":"9614edb4bc079eed56ce59002a5d7ed9163f8956b9091ffc83ff046d78bf8093"}},{"ruleId":"D2","level":"warning","message":{"text":"visitTile (cognitive 69): visitTile has cognitive complexity 69 (threshold 15). Drivers by points: if/else 16 (39 pts), ternaries 5 (13 pts), loops 2 (9 pts), boolean chains 8 (nesting depth added 38). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff9e6db0fb86f02a995b2e4882f1b757a113d5ff3ba238e1864158a89a49939"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTileset (cognitive 68): Cesium3DTileset has cognitive complexity 68 (threshold 15). Drivers by points: other 56, if/else 8, boolean chains 2, loops 1, ternaries 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"f396e558999102e598c35e61fd693040d3d4132fe341276b8bb5229b0c8a082d"}},{"ruleId":"D2","level":"warning","message":{"text":"CylinderGeometry.CylinderGeometry.createGeometry (cognitive 67): CylinderGeometry.CylinderGeometry.createGeometry has cognitive complexity 67 (threshold 15). Drivers by points: if/else 20 (46 pts), loops 7 (11 pts), ternaries 5 (6 pts), boolean chains 4 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CylinderGeometry.js"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"a885ba8fd13cb769d321aef2d80309aa2a554a123bdba3532fcb37137f4d48e9"}},{"ruleId":"D2","level":"warning","message":{"text":"Expression.parseCall (cognitive 67): Expression.parseCall has cognitive complexity 67 (threshold 15). Drivers by points: if/else 34 (57 pts), boolean chains 8, loops 1 (2 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"17638a4242e51bd8c46da4c501a5a8347347c04515f84a704043e0ec3619d02f"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SGeometry.I3SGeometry._generateGltf (cognitive 67): I3SGeometry.I3SGeometry._generateGltf has cognitive complexity 67 (threshold 15). Drivers by points: if/else 15 (43 pts), loops 5 (18 pts), boolean chains 6 (nesting depth added 41). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SGeometry.js"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca37d03cc396cdfdf09d33d9154b2a501df4077ec9078a73311a761a93c3b8e7"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineCollection.PolylineBucket.writeUpdate (cognitive 66): PolylineCollection.PolylineBucket.writeUpdate has cognitive complexity 66 (threshold 15). Drivers by points: if/else 17 (45 pts), boolean chains 10, ternaries 2 (6 pts), loops 2 (5 pts) (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1807}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3636c34f2d362d93029f75ba44f4dac68d2e8bbee71c975d08b8deed1cde39e"}},{"ruleId":"D2","level":"warning","message":{"text":"VertexAIClient.geminiStreamRequest (cognitive 66): VertexAIClient.geminiStreamRequest has cognitive complexity 66 (threshold 15). Drivers by points: if/else 16 (35 pts), ternaries 5 (12 pts), error handling 3 (7 pts), loops 3 (7 pts), boolean chains 5 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"d54a373b292cb51dd16df6719377377668257b81d9b0bdf21d677175b85b548f"}},{"ruleId":"D2","level":"warning","message":{"text":"addInterval (cognitive 66): addInterval has cognitive complexity 66 (threshold 15). Drivers by points: if/else 20 (36 pts), ternaries 4 (16 pts), boolean chains 13, loops 1 (nesting depth added 28). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c25da083ea4bd8b20ffc2a1e4656924be74ce8ddc7f5a3c55e233d8190ed45"}},{"ruleId":"D2","level":"warning","message":{"text":"Label.reverseRtl (cognitive 64): Label.reverseRtl has cognitive complexity 64 (threshold 15). Drivers by points: if/else 22 (55 pts), boolean chains 3, loops 2 (3 pts), ternaries 1 (3 pts) (nesting depth added 36). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"65cbf217e758414533538c52566a172fa309f293ddc341f424e8906eb64b3a78"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticOutlineGeometryBatch.Batch.update (cognitive 64): StaticOutlineGeometryBatch.Batch.update has cognitive complexity 64 (threshold 15). Drivers by points: if/else 20 (54 pts), boolean chains 8, loops 1 (2 pts) (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticOutlineGeometryBatch.js"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8c76b73dc81ce8ef80c514eee8b299c01d2b4864f5c115b20a82c7100d55f07"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelVisualizer.ModelVisualizer.update (cognitive 64): ModelVisualizer.ModelVisualizer.update has cognitive complexity 64 (threshold 15). Drivers by points: if/else 18 (51 pts), loops 3 (9 pts), boolean chains 4 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/ModelVisualizer.js"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6f01773e6c9f558e0108ffbe210e49a27d71102006bc1bb206c82630f6a895c"}},{"ruleId":"D2","level":"warning","message":{"text":"Timeline.Timeline._makeTics (cognitive 64): Timeline.Timeline._makeTics has cognitive complexity 64 (threshold 15). Drivers by points: if/else 27 (48 pts), loops 6 (12 pts), boolean chains 4 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/Timeline.js"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb4b40b58aab204d7545ef2bd90ac6ca13ccc7c1ed0778926fc799dccc9ed5c6"}},{"ruleId":"D2","level":"warning","message":{"text":"Texture (cognitive 63): Texture has cognitive complexity 63 (threshold 15). Drivers by points: if/else 33 (44 pts), boolean chains 14, other 4, ternaries 1 (nesting depth added 11). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"85c48c23b959815964fc19c0b7997366d6c5847c355fe3391bb11e7bc76736fb"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticGeometryPerMaterialBatch.Batch.update (cognitive 62): StaticGeometryPerMaterialBatch.Batch.update has cognitive complexity 62 (threshold 15). Drivers by points: if/else 21 (54 pts), boolean chains 6, loops 1 (2 pts) (nesting depth added 34). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryPerMaterialBatch.js"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"251ef37aac7c977d1e6c799233f162eaa0bde68294dbe1c1ed63deaddba8f9bc"}},{"ruleId":"D2","level":"warning","message":{"text":"EllipsoidOutlineGeometry.EllipsoidOutlineGeometry.createGeometry (cognitive 60): EllipsoidOutlineGeometry.EllipsoidOutlineGeometry.createGeometry has cognitive complexity 60 (threshold 15). Drivers by points: loops 20 (37 pts), if/else 14 (18 pts), boolean chains 3, ternaries 1 (2 pts) (nesting depth added 22). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipsoidOutlineGeometry.js"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd74e4f624f632eb68cb358b1e6d261835135f5fb7a398cb68cacb696c1846f"}},{"ruleId":"D2","level":"warning","message":{"text":"CorridorGeometry.combine (cognitive 59): CorridorGeometry.combine has cognitive complexity 59 (threshold 15). Drivers by points: loops 17 (40 pts), if/else 13 (16 pts), ternaries 3 (nesting depth added 26). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1ad8f3f0d9c73053454ac3e16c63c673b000720f82296c6e2804cd6d01bbc34"}},{"ruleId":"D2","level":"warning","message":{"text":"App.App (cognitive 59): App.App has cognitive complexity 59 (threshold 15). Drivers by points: if/else 27 (28 pts), boolean chains 16, ternaries 11 (13 pts), error handling 2 (nesting depth added 3). Of this number, 16 points are the body\u0027s own statements and 43 belong to 20 function literals inside it that branch. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"d14553eae69cf4180bdb2d351ff54c405927d642fde744e0882eccee64b8a6c0"}},{"ruleId":"D2","level":"warning","message":{"text":"upsampleQuantizedTerrainMesh.upsampleQuantizedTerrainMesh (cognitive 58): upsampleQuantizedTerrainMesh.upsampleQuantizedTerrainMesh has cognitive complexity 58 (threshold 15). Drivers by points: if/else 22 (38 pts), boolean chains 7, ternaries 7, loops 6 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/upsampleQuantizedTerrainMesh.js"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94b8418e7a9bcc4eb36fa28040945e35f4aee721d14eb702b1398f36a303ba5"}},{"ruleId":"D2","level":"warning","message":{"text":"processProperty (cognitive 58): processProperty has cognitive complexity 58 (threshold 15). Drivers by points: if/else 25 (37 pts), boolean chains 10, ternaries 3 (9 pts), other 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"0210100d05b1f3122d5af8ccdddbdad239c114f9351de6053343e82bf5e94bcf"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelAnimationCollection.ModelAnimationCollection.update (cognitive 57): ModelAnimationCollection.ModelAnimationCollection.update has cognitive complexity 57 (threshold 15). Drivers by points: if/else 17 (43 pts), boolean chains 9, ternaries 1 (3 pts), loops 2 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelAnimationCollection.js"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e4e1005259aaff96727cfcac7b6410eee876d30a730818e8c1110fd455e82b6"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 57): update has cognitive complexity 57 (threshold 15). Drivers by points: if/else 16 (35 pts), loops 5 (15 pts), boolean chains 5, ternaries 1 (2 pts) (nesting depth added 30). Of this number, 52 points are the body\u0027s own statements and 5 belong to 3 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPrimitive.js"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"59cf977cf66e98730e12c24dc6ac487cc45e483bd36e43aefa5100da6ee3a63c"}},{"ruleId":"D2","level":"warning","message":{"text":"renderBufferPolygonCollection.renderBufferPolygonCollection (cognitive 56): renderBufferPolygonCollection.renderBufferPolygonCollection has cognitive complexity 56 (threshold 15). Drivers by points: if/else 17 (27 pts), loops 7 (19 pts), boolean chains 5, ternaries 3 (5 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolygonCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"cced79c459f4de42ebab5855bfcc27220de93f19f08e963c89e95e01933b7553"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTileBatchTable.Cesium3DTileBatchTable.addDerivedCommands (cognitive 56): Cesium3DTileBatchTable.Cesium3DTileBatchTable.addDerivedCommands has cognitive complexity 56 (threshold 15). Drivers by points: if/else 17 (48 pts), boolean chains 5, ternaries 1 (2 pts), loops 1 (nesting depth added 32). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileBatchTable.js"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"229886aa2a28660f90e2b6fabf4f06c7f61aec888c3027638af496ca7c7b046b"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageryLayer.ImageryLayer._createTileImagerySkeletons (cognitive 56): ImageryLayer.ImageryLayer._createTileImagerySkeletons has cognitive complexity 56 (threshold 15). Drivers by points: if/else 29 (39 pts), boolean chains 14, loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayer.js"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3ae15c4d21e70a7a7f65a166184c954eae386581373a8e214ebcb7b057f23a"}},{"ruleId":"D2","level":"warning","message":{"text":"SampledProperty.SampledProperty.getValue (cognitive 56): SampledProperty.SampledProperty.getValue has cognitive complexity 56 (threshold 15). Drivers by points: if/else 21 (46 pts), boolean chains 5, loops 2 (5 pts) (nesting depth added 28). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/SampledProperty.js"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"de15473f2d812049e8d76d7918c506ae42ee6bd402a3101014a4e437fc8842d0"}},{"ruleId":"D2","level":"warning","message":{"text":"EntityView.updateTransform (cognitive 56): EntityView.updateTransform has cognitive complexity 56 (threshold 15). Drivers by points: if/else 20 (48 pts), boolean chains 6, ternaries 1 (2 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityView.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a4cb234a08b09220b87b1e685de1265134f7aafd7c468de0618651d594aa7cf"}},{"ruleId":"D2","level":"warning","message":{"text":"buildVectorGltfFromMVT::buildStructuralMetadata (cognitive 56): buildVectorGltfFromMVT::buildStructuralMetadata has cognitive complexity 56 (threshold 15). Drivers by points: if/else 19 (33 pts), loops 8 (17 pts), ternaries 1 (4 pts), boolean chains 2 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/buildVectorGltfFromMVT.js"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"24b105cdc5a1963f6d77eb98b39f89fcd08c1543dff30f914858d3c7386551bb"}},{"ruleId":"D2","level":"warning","message":{"text":"ShaderProgram.findUniforms (cognitive 55): ShaderProgram.findUniforms has cognitive complexity 55 (threshold 15). Drivers by points: if/else 12 (47 pts), loops 2 (6 pts), ternaries 1 (2 pts) (nesting depth added 40). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/ShaderProgram.js"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce03433d585c87a4df233c32381d2ace5252fb7dc1751f764be002e79f13fa97"}},{"ruleId":"D2","level":"warning","message":{"text":"TerrainFillMesh.propagateEdge (cognitive 55): TerrainFillMesh.propagateEdge has cognitive complexity 55 (threshold 15). Drivers by points: if/else 14 (31 pts), loops 8 (16 pts), boolean chains 6, match/switch 2 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"aba3f69eefea1c57670b062db67b4fa3896047164c874d404020971bddda3b14"}},{"ruleId":"D2","level":"warning","message":{"text":"processPositionProperty (cognitive 55): processPositionProperty has cognitive complexity 55 (threshold 15). Drivers by points: if/else 27 (41 pts), boolean chains 11, other 2, ternaries 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"931808f3d299ff1ad3fecebc665deec7e9f4561d3fedc325befba577e2eab64a"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeDraco (cognitive 55): decodeDraco has cognitive complexity 55 (threshold 15). Drivers by points: if/else 11 (31 pts), ternaries 5 (15 pts), error handling 1 (3 pts), loops 1 (3 pts), boolean chains 2, other 1 (nesting depth added 34). Most of this is not in the body itself: 7 of the 55 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1179, 1263). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"02c931ed7faafb8e83a49ca0dfda66a78ca912a9bcc4bbcebd3f5145462210fc"}},{"ruleId":"D2","level":"warning","message":{"text":"Expression.setEvaluateFunction (cognitive 54): Expression.setEvaluateFunction has cognitive complexity 54 (threshold 15). Drivers by points: if/else 49 (54 pts) (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"d73ebd396f15391bca80f0cdc6bf05730b036033e288634edbd67d23274397ba"}},{"ruleId":"D2","level":"warning","message":{"text":"getCornerFromEdge (cognitive 54): getCornerFromEdge has cognitive complexity 54 (threshold 15). Drivers by points: if/else 14 (30 pts), ternaries 8 (22 pts), boolean chains 2 (nesting depth added 30). Of this number, 46 points are the body\u0027s own statements and 8 belong to one function literal inside it that branches. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cfdfa3d2d43214fa40a056aedc40e4ecd9f485d1fd471b2392c5ece696814d4"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 54): update has cognitive complexity 54 (threshold 15). Drivers by points: if/else 20 (32 pts), boolean chains 15, loops 2 (4 pts), ternaries 1 (2 pts), other 1 (nesting depth added 15). Of this number, 50 points are the body\u0027s own statements and 4 belong to 7 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClassificationPrimitive.js"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc50b90ff7ac4eb1e629d209261d9d614cdf8259e87f25fd79eac64a607170ae"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 54): update has cognitive complexity 54 (threshold 15). Drivers by points: if/else 19 (29 pts), boolean chains 21, other 2, loops 1, ternaries 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelEllipsoidShape.js"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec52daf4c22af58ba8a64854de5673985b0c00c0e83220c10bfdcdd231139589"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticGroundPolylinePerMaterialBatch.Batch.update (cognitive 53): StaticGroundPolylinePerMaterialBatch.Batch.update has cognitive complexity 53 (threshold 15). Drivers by points: if/else 19 (47 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"b370ed9622a40bbbf8e0442d14baf96ca06122f780137c4106907d4d1159035f"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonGeometryLibrary.PolygonGeometryLibrary.polygonsFromHierarchy (cognitive 52): PolygonGeometryLibrary.PolygonGeometryLibrary.polygonsFromHierarchy has cognitive complexity 52 (threshold 15). Drivers by points: if/else 13 (33 pts), loops 6 (17 pts), ternaries 1 (2 pts) (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"fecd85021e426d07af6368d6cb4229482c7e1ba3ffd548083aecb6061b4fdcb9"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonGeometryLibrary.PolygonGeometryLibrary.computeWallGeometry (cognitive 52): PolygonGeometryLibrary.PolygonGeometryLibrary.computeWallGeometry has cognitive complexity 52 (threshold 15). Drivers by points: if/else 15 (33 pts), loops 7 (18 pts), ternaries 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bcfec2e30069c9b235ddc4722f3c05f76c75d8a8067e55518ddaab96eff8c29"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitivePipeline.geometryPipeline (cognitive 52): PrimitivePipeline.geometryPipeline has cognitive complexity 52 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 8 (15 pts), boolean chains 5 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"af2628d85164fae99c45ee24bdae4481154697489403e341483758fc4f898db6"}},{"ruleId":"D2","level":"warning","message":{"text":"Vector3DTileGeometry.createPrimitive (cognitive 52): Vector3DTileGeometry.createPrimitive has cognitive complexity 52 (threshold 15). Drivers by points: if/else 16 (33 pts), ternaries 8 (16 pts), loops 1 (3 pts) (nesting depth added 27). Of this number, 45 points are the body\u0027s own statements and 7 belong to 2 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileGeometry.js"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"f898e56b52d9fcb641348b5f74ea11e9aaa4c11bdcff8399fcefb7c6e111e10b"}},{"ruleId":"D2","level":"warning","message":{"text":"recurseEntities (cognitive 52): recurseEntities has cognitive complexity 52 (threshold 15). Drivers by points: if/else 13 (36 pts), loops 4 (11 pts), ternaries 1 (4 pts), boolean chains 1 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"771dbc65797b6f048f515061c76a30755e75ba5dbe4c6dd11e9d909c9b0759e8"}},{"ruleId":"D2","level":"warning","message":{"text":"parseMetadataSuccess (cognitive 52): parseMetadataSuccess has cognitive complexity 52 (threshold 15). Drivers by points: if/else 21 (26 pts), boolean chains 11, ternaries 5 (10 pts), loops 2 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"418b0e873b1737c822b10795e3c254fd9b4287df3864a44a6fa50c77712ad422"}},{"ruleId":"D2","level":"warning","message":{"text":"GeminiClient.streamRequest (cognitive 51): GeminiClient.streamRequest has cognitive complexity 51 (threshold 15). Drivers by points: if/else 11 (29 pts), error handling 3 (7 pts), loops 3 (7 pts), ternaries 3 (6 pts), boolean chains 2 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/GeminiClient.ts"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"b35b7e064fb7252c3d8f7d3af0e028fa48e150df56e810d08b2985a2545f7289"}},{"ruleId":"D2","level":"warning","message":{"text":"buildGallery.buildGalleryList (cognitive 50): buildGallery.buildGalleryList has cognitive complexity 50 (threshold 15). Drivers by points: if/else 18 (32 pts), boolean chains 7, error handling 3 (5 pts), loops 3 (4 pts), ternaries 1 (2 pts) (nesting depth added 18). Of this number, 49 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/scripts/buildGallery.js"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d7305e1ac21d3a164b58b6c51b63773baec9ddd8ee1cf870fb6a62be303a1bc"}},{"ruleId":"D2","level":"warning","message":{"text":"SimplePolylineGeometry.SimplePolylineGeometry.createGeometry (cognitive 50): SimplePolylineGeometry.SimplePolylineGeometry.createGeometry has cognitive complexity 50 (threshold 15). Drivers by points: if/else 14 (28 pts), loops 6 (18 pts), boolean chains 4 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/SimplePolylineGeometry.js"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b899d85aa5d961b32742f2e2ada5a082b638f95b857931b3fc2a4b63a14f4ee"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeMVT.decodeGeometry (cognitive 50): decodeMVT.decodeGeometry has cognitive complexity 50 (threshold 15). Drivers by points: if/else 14 (31 pts), loops 6 (18 pts), boolean chains 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/decodeMVT.js"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"855cf670eda4ad898103f79167198b79f69845ed216b0dd81b5e496e79a31f94"}},{"ruleId":"D2","level":"warning","message":{"text":"createTracks (cognitive 50): createTracks has cognitive complexity 50 (threshold 15). Drivers by points: if/else 18 (28 pts), loops 6 (14 pts), ternaries 2 (4 pts), boolean chains 3, other 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"78b69875aa1ee7c61cfd19b77d3b3c8f1572592364bc61c6ea968e5f8c709bce"}},{"ruleId":"D2","level":"warning","message":{"text":"Tipsify.Tipsify.tipsify (cognitive 49): Tipsify.Tipsify.tipsify has cognitive complexity 49 (threshold 15). Drivers by points: if/else 16 (32 pts), loops 10 (15 pts), boolean chains 2 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Tipsify.js"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"72217b90ac0e44331ed4609bc3e3f2a56b294a19a0dc3a3e93fe9692ee1fc2fe"}},{"ruleId":"D2","level":"warning","message":{"text":"WallGeometry.WallGeometry.createGeometry (cognitive 49): WallGeometry.WallGeometry.createGeometry has cognitive complexity 49 (threshold 15). Drivers by points: if/else 19 (41 pts), ternaries 5, loops 2, boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/WallGeometry.js"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7705a9372e2e48a0f5d29ce36d3eda022dcf8721bc60948e4aafc11ac3cdca6"}},{"ruleId":"D2","level":"warning","message":{"text":"FramebufferManager.FramebufferManager.destroy (cognitive 49): FramebufferManager.FramebufferManager.destroy has cognitive complexity 49 (threshold 15). Drivers by points: if/else 15 (35 pts), boolean chains 12, loops 1 (2 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/FramebufferManager.js"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"e66b2744af3a612df3295514a8f80da1ad907869e55ab1bbc7395bdccc9396da"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticGroundGeometryColorBatch.Batch.update (cognitive 49): StaticGroundGeometryColorBatch.Batch.update has cognitive complexity 49 (threshold 15). Drivers by points: if/else 17 (42 pts), boolean chains 5, loops 1 (2 pts) (nesting depth added 26). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundGeometryColorBatch.js"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"b04131db5d50128fb39e9857961bd04b1d05bd5d40e211ece217ca58515dca37"}},{"ruleId":"D2","level":"warning","message":{"text":"Model (cognitive 49): Model has cognitive complexity 49 (threshold 15). Drivers by points: other 33, if/else 9, boolean chains 5, ternaries 2. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"288a1b331ee718d197282e25e575e6ba246a89ae5a5bcfabddbd7d72362bc772"}},{"ruleId":"D2","level":"warning","message":{"text":"loadAsynchronous (cognitive 49): loadAsynchronous has cognitive complexity 49 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 5 (14 pts), boolean chains 4, error handling 2 (4 pts), ternaries 2 (4 pts), other 1 (nesting depth added 26). Of this number, 45 points are the body\u0027s own statements and 4 belong to 4 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7f511b1943ebf25b83ba54c1e19bd62c1a70edaf80469e3ab9aa55e9f8b455d"}},{"ruleId":"D2","level":"warning","message":{"text":"CesiumWidget (cognitive 49): CesiumWidget has cognitive complexity 49 (threshold 15). Drivers by points: if/else 23 (29 pts), other 9, boolean chains 6, ternaries 3, error handling 1, loops 1 (nesting depth added 6). Of this number, 47 points are the body\u0027s own statements and 2 belong to 4 function items inside it that branch. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb75366b06195b8286daf5a1f7116838769e8a4b1c48824fb11eede6cdec89ec"}},{"ruleId":"D2","level":"warning","message":{"text":"createVerticesFromGoogleEarthEnterpriseBuffer.processBuffer (cognitive 48): createVerticesFromGoogleEarthEnterpriseBuffer.processBuffer has cognitive complexity 48 (threshold 15). Drivers by points: if/else 20 (36 pts), loops 5 (7 pts), boolean chains 3, ternaries 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"213183d311e1f0bc32b193bb1e0dd62e0901620b120aa2d04ec0dad086d66ab5"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 48): update has cognitive complexity 48 (threshold 15). Drivers by points: if/else 20 (34 pts), boolean chains 9, ternaries 3 (4 pts), other 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EllipsoidGeometryUpdater.js"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b0a1c07b76e023242d5b24fb2cd8946405ba020320d3874dc79a3aad85aea5"}},{"ruleId":"D2","level":"warning","message":{"text":"GroundPolylineGeometry.generateGeometryAttributes (cognitive 47): GroundPolylineGeometry.generateGeometryAttributes has cognitive complexity 47 (threshold 15). Drivers by points: if/else 14 (27 pts), loops 6 (9 pts), ternaries 3 (7 pts), boolean chains 4 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"71122d0255b18886b12aa5dcafa9b96aa70998b9c963479c594352aa41de225f"}},{"ruleId":"D2","level":"warning","message":{"text":"processDescription (cognitive 47): processDescription has cognitive complexity 47 (threshold 15). Drivers by points: if/else 10 (22 pts), other 10, loops 3 (8 pts), ternaries 1 (6 pts), boolean chains 1 (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2087}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33986d88d65d7c0d623f38d94ca640736e2893064e6e734eae427b94417bd0c"}},{"ruleId":"D2","level":"warning","message":{"text":"clipTileFromQuadrant (cognitive 47): clipTileFromQuadrant has cognitive complexity 47 (threshold 15). Drivers by points: if/else 11 (28 pts), ternaries 6 (13 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeaa235c218867c5231521cbae68357e3a85afe78bfc00a639fdfd009e1a1225"}},{"ruleId":"D2","level":"warning","message":{"text":"fromGeometry (cognitive 47): fromGeometry has cognitive complexity 47 (threshold 15). Drivers by points: if/else 13 (33 pts), loops 2 (5 pts), other 5, boolean chains 3, ternaries 1 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3886eb54ae49a2a422ae832b9443c5a1b153db145d6f8534097779c4590d1da"}},{"ruleId":"D2","level":"warning","message":{"text":"CesiumInspectorViewModel (cognitive 47): CesiumInspectorViewModel has cognitive complexity 47 (threshold 15). Drivers by points: if/else 26 (33 pts), boolean chains 7, loops 2 (5 pts), ternaries 1 (2 pts) (nesting depth added 11). Most of this is not in the body itself: 2 of the 47 points are its own statements and the rest belongs to 32 function items inside it that branch (selectTile, (anonymous), (anonymous)::debugCommandFilter, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/CesiumInspector/CesiumInspectorViewModel.js"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e24defc45691d22abf2806b942ad2015836945aa3788323552621b7940c5a00"}},{"ruleId":"D2","level":"warning","message":{"text":"CorridorGeometry.extrudedAttributes (cognitive 46): CorridorGeometry.extrudedAttributes has cognitive complexity 46 (threshold 15). Drivers by points: if/else 13 (26 pts), loops 4 (10 pts), ternaries 3 (6 pts), boolean chains 4 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e1603167113b43fa8af924965632b083412968340befd2d8883179d99b9ddad"}},{"ruleId":"D2","level":"warning","message":{"text":"View.View.createPotentiallyVisibleSet (cognitive 46): View.View.createPotentiallyVisibleSet has cognitive complexity 46 (threshold 15). Drivers by points: if/else 15 (33 pts), loops 7 (9 pts), boolean chains 3, ternaries 1 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/View.js"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"63cd76c918f6c7528fb793d501f18ab9cb3df3957f9920ada2a8d1b6f52dbe9f"}},{"ruleId":"D2","level":"warning","message":{"text":"BaseLayerPickerViewModel.BaseLayerPickerViewModel (cognitive 46): BaseLayerPickerViewModel.BaseLayerPickerViewModel has cognitive complexity 46 (threshold 15). Drivers by points: if/else 21 (32 pts), loops 7 (10 pts), boolean chains 2, ternaries 2 (nesting depth added 14). Most of this is not in the body itself: 1 of the 46 points is its own statement and the rest belongs to 7 function literals inside it that branch (lines 180, 73, 104, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/BaseLayerPicker/BaseLayerPickerViewModel.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"68cbd2636261835c94f11ec596ef0052d0886425f05fa5e531f53fb042f869ca"}},{"ruleId":"D2","level":"warning","message":{"text":"repositionAllGlyphs (cognitive 46): repositionAllGlyphs has cognitive complexity 46 (threshold 15). Drivers by points: if/else 22 (41 pts), loops 2, ternaries 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":"packages/engine/Source/Scene/LabelCollection.js"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"75eb00b0ad68547f90999cd8f93ca887d4738aba00f16b0e3885de46bb2f41bc"}},{"ruleId":"D2","level":"warning","message":{"text":"processScreenOverlay::onload (cognitive 45): processScreenOverlay::onload has cognitive complexity 45 (threshold 15). Drivers by points: if/else 25 (43 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2499}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5a4955bc1da5e47de7818b52a1d470ff2d7d9397c80d9eb78e3d7decb60d78"}},{"ruleId":"D2","level":"warning","message":{"text":"Framebuffer.Framebuffer (cognitive 44): Framebuffer.Framebuffer has cognitive complexity 44 (threshold 15). Drivers by points: if/else 20 (30 pts), boolean chains 10, loops 2 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Framebuffer.js"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f2230d6ef7da351b6c87855dffcfd605cee7b6667977b8e0d7bbc36f5897d17"}},{"ruleId":"D2","level":"warning","message":{"text":"DiffMatcher.fuzzyMatch (cognitive 44): DiffMatcher.fuzzyMatch has cognitive complexity 44 (threshold 15). Drivers by points: if/else 11 (28 pts), boolean chains 9, loops 3 (6 pts), ternaries 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bec36d7dc3c0a2cb10aca357c5f92ab8e6fea8035da0532b6c926da41236c03"}},{"ruleId":"D2","level":"warning","message":{"text":"updateEnvironment (cognitive 44): updateEnvironment has cognitive complexity 44 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 14, ternaries 6 (11 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3719}}}],"partialFingerprints":{"codehealthFindingId/v1":"c613b93a95fb3d01ac79458b4460dc2033b019d1c46f025fa759406c35f9b94e"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 44): update has cognitive complexity 44 (threshold 15). Drivers by points: if/else 23 (25 pts), boolean chains 14, other 4, ternaries 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":2083}}}],"partialFingerprints":{"codehealthFindingId/v1":"1269ddfdbc6bc0d206ed84d92b8e61887a880c93554ee1451ced745d0e900a68"}},{"ruleId":"D2","level":"warning","message":{"text":"_clipRingToRect (cognitive 44): _clipRingToRect has cognitive complexity 44 (threshold 15). Drivers by points: ternaries 10 (27 pts), if/else 6 (14 pts), loops 2 (3 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VectorPipeline.js"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"1140d8e42125d57ce058e9cfe7a3addcc24c2789716c5d89784a27ba5e5747b3"}},{"ruleId":"D2","level":"warning","message":{"text":"Scene.updateAndClearFramebuffers (cognitive 43): Scene.updateAndClearFramebuffers has cognitive complexity 43 (threshold 15). Drivers by points: if/else 22 (29 pts), boolean chains 14 (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3963}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ebbcea20faf301e55e5687726d40db40586c22399edebfb4c03e1d002e9ec7c"}},{"ruleId":"D2","level":"warning","message":{"text":"_onEntityPropertyChanged (cognitive 43): _onEntityPropertyChanged has cognitive complexity 43 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 8, ternaries 4 (8 pts), other 6 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PolylineGeometryUpdater.js"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"31767610fe518d4428eb958f20c96d2141d7335d34fa099334937cd6b8a235eb"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonPipeline.PolygonPipeline.computeSubdivision (cognitive 42): PolygonPipeline.PolygonPipeline.computeSubdivision has cognitive complexity 42 (threshold 15). Drivers by points: if/else 14 (40 pts), loops 2 (nesting depth added 26). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (PolygonPipeline.PolygonPipeline.computeRhumbLineSubdivision) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonPipeline.js"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9dab938418e638cd4e9dfb14b680c503aa602d8b14df3968e2e7d7372a1234"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonPipeline.PolygonPipeline.computeRhumbLineSubdivision (cognitive 42): PolygonPipeline.PolygonPipeline.computeRhumbLineSubdivision has cognitive complexity 42 (threshold 15). Drivers by points: if/else 14 (40 pts), loops 2 (nesting depth added 26). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (PolygonPipeline.PolygonPipeline.computeSubdivision) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonPipeline.js"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c2f9c531fe37c377ae167d28bcea3c4e02a614662588b9c9d3843a05c683a8b"}},{"ruleId":"D2","level":"warning","message":{"text":"RectangleGeometry.constructRectangle (cognitive 42): RectangleGeometry.constructRectangle has cognitive complexity 42 (threshold 15). Drivers by points: if/else 15 (22 pts), loops 7 (14 pts), boolean chains 4, ternaries 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"54a071dba0c54ff9612ed4cbe81117effd50762515089a20be56632136c8d552"}},{"ruleId":"D2","level":"warning","message":{"text":"Geometry3DTileContent.getBatchIds (cognitive 42): Geometry3DTileContent.getBatchIds has cognitive complexity 42 (threshold 15). Drivers by points: boolean chains 16, if/else 10 (14 pts), loops 4 (12 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Geometry3DTileContent.js"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d49e2e0b24e7200072438610e2bf8c1691b3471046b518a9cb6165be39e018"}},{"ruleId":"D2","level":"warning","message":{"text":"KmlDataSource.computeFinalStyle (cognitive 42): KmlDataSource.computeFinalStyle has cognitive complexity 42 (threshold 15). Drivers by points: if/else 14 (36 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1118}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1481a0b88f4441e241853039e5e63bb0085422c21832c5a7c760a8a2948cb17"}},{"ruleId":"D2","level":"warning","message":{"text":"ChatMessage.ChatMessage (cognitive 42): ChatMessage.ChatMessage has cognitive complexity 42 (threshold 15). Drivers by points: boolean chains 25, if/else 9 (13 pts), ternaries 2, error handling 1, loops 1 (nesting depth added 4). Of this number, 31 points are the body\u0027s own statements and 11 belong to 6 function literals inside it that branch. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ChatMessage.tsx"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9d160734c87c54fcec03b117f5e51d125deb521fdeea982d41dbd76582b0f39"}},{"ruleId":"D2","level":"warning","message":{"text":"Intersections2D.Intersections2D.clipTriangleAtAxisAlignedThreshold (cognitive 41): Intersections2D.Intersections2D.clipTriangleAtAxisAlignedThreshold has cognitive complexity 41 (threshold 15). Drivers by points: if/else 24 (38 pts), boolean chains 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Intersections2D.js"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2db292766c6a36fee537da3662be487b7c408b47a2c9791bd30d504b3527eaf"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticGroundGeometryPerMaterialBatch.Batch.update (cognitive 41): StaticGroundGeometryPerMaterialBatch.Batch.update has cognitive complexity 41 (threshold 15). Drivers by points: if/else 15 (35 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"25840027e754386d34a9e1e099782ce6f9c8b9eb62122b00dbac35f50d296162"}},{"ruleId":"D2","level":"warning","message":{"text":"main.buildCategoryPanel (cognitive 41): main.buildCategoryPanel has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (30 pts), loops 4 (6 pts), boolean chains 5 (nesting depth added 16). Of this number, 19 points are the body\u0027s own statements and 22 belong to 6 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/aec-tileset-metadata-filtering/main.js"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f2ebc0ae3117d84bd534f0ee5267c76050c1491d3a98b84ee46ffd574161b1"}},{"ruleId":"D2","level":"warning","message":{"text":"createGeometry (cognitive 41): createGeometry has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (28 pts), boolean chains 8, loops 4 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a86ac5c9a3af3aa12f20ad83c8ca3da154a639ee34ae0c7ceddeceb69a87762"}},{"ruleId":"D2","level":"warning","message":{"text":"Texture3D (cognitive 41): Texture3D has cognitive complexity 41 (threshold 15). Drivers by points: if/else 24 (31 pts), boolean chains 8, other 2 (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture3D.js"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf3d87b5a2293a3b6b41777e419cd067c35d8cdb1190d5ea7c0b4039a20793b"}},{"ruleId":"D2","level":"warning","message":{"text":"EllipseGeometry.computeWallAttributes (cognitive 40): EllipseGeometry.computeWallAttributes has cognitive complexity 40 (threshold 15). Drivers by points: if/else 17 (28 pts), ternaries 6 (8 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"377a511795a4578ddd665c7952913fdf73b166acab4e798fd26e55d0b788940b"}},{"ruleId":"D2","level":"warning","message":{"text":"LabelCollection.rebindAllGlyphs (cognitive 40): LabelCollection.rebindAllGlyphs has cognitive complexity 40 (threshold 15). Drivers by points: if/else 14 (25 pts), loops 4 (12 pts), boolean chains 3 (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":"packages/engine/Source/Scene/LabelCollection.js"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"59117411bec4d873aae7798bc691097af6e4af65df8bf2a2c601b3b34dd20a55"}},{"ruleId":"D2","level":"warning","message":{"text":"CzmlDataSource.processMaterialProperty (cognitive 40): CzmlDataSource.processMaterialProperty has cognitive complexity 40 (threshold 15). Drivers by points: if/else 28 (40 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc7af76f249da1133339beeece841e2e3f65e91bc7d0f8d58b3a3e4b223ada9"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SSymbology.buildUniqueValueHash (cognitive 40): I3SSymbology.buildUniqueValueHash has cognitive complexity 40 (threshold 15). Drivers by points: if/else 6 (21 pts), loops 5 (19 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SSymbology.js"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"37b76e40c6bbd35996a208e6ba56a71c272fc1b1e08fe97aa60e5145c540e9cc"}},{"ruleId":"D2","level":"warning","message":{"text":"applyStyle (cognitive 40): applyStyle has cognitive complexity 40 (threshold 15). Drivers by points: if/else 14 (31 pts), other 7, boolean chains 1, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"63fbe37555eabda2f3694e4c9a51bca65cb2095cba6cfb44320b4b8f53dcb792"}},{"ruleId":"D2","level":"warning","message":{"text":"getUniformType (cognitive 40): getUniformType has cognitive complexity 40 (threshold 15). Drivers by points: if/else 14 (29 pts), boolean chains 7, loops 1 (4 pts) (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5af17407f0cd57ac45c4c45d79669eefcc106d808e7da10bd0bcfee76946db7"}},{"ruleId":"D2","level":"warning","message":{"text":"renderBufferPointCollection.renderBufferPointCollection (cognitive 39): renderBufferPointCollection.renderBufferPointCollection has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (21 pts), loops 4 (8 pts), boolean chains 6, ternaries 3 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPointCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"729516278fc22d94747437d28d1a583bc6f74747bb119820aba04b613f9422be"}},{"ruleId":"D2","level":"warning","message":{"text":"VectorGltf3DTileContent.applyStyle (cognitive 39): VectorGltf3DTileContent.applyStyle has cognitive complexity 39 (threshold 15). Drivers by points: if/else 10 (30 pts), loops 6 (9 pts) (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VectorGltf3DTileContent.js"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4fe1f5d77207c340879f461b5536c55aeadeace9439d9d0930271df6018a78b"}},{"ruleId":"D2","level":"warning","message":{"text":"EllipsoidPrimitive.EllipsoidPrimitive.update (cognitive 39): EllipsoidPrimitive.EllipsoidPrimitive.update has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (29 pts), boolean chains 10 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/EllipsoidPrimitive.js"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebffb422ce054e7265e5e6cacd1f7d9923a0e4cb7f7c2a4c232bc174ffa955ee"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeSurfaceTileProvider.updateTileBoundingRegion (cognitive 39): GlobeSurfaceTileProvider.updateTileBoundingRegion has cognitive complexity 39 (threshold 15). Drivers by points: if/else 16 (30 pts), boolean chains 7, loops 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0564f1b955f03d37783a474f74af03d00e5a0669caf4a30b388bfa7c60d5718"}},{"ruleId":"D2","level":"warning","message":{"text":"compressVertices (cognitive 39): compressVertices has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (28 pts), boolean chains 4, ternaries 4, loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"f248bf3f2bb386cd98e0318fbaec6d0f7a2f9854afb2036f1e4d8dd749967729"}},{"ruleId":"D2","level":"warning","message":{"text":"createFillMesh (cognitive 39): createFillMesh has cognitive complexity 39 (threshold 15). Drivers by points: loops 9 (18 pts), if/else 8 (11 pts), ternaries 3 (8 pts), boolean chains 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f56161f5dec3a21f0888e3111525a3c5faecb75a78663f5216f3acb7db8dd7b"}},{"ruleId":"D2","level":"warning","message":{"text":"createResources (cognitive 39): createResources has cognitive complexity 39 (threshold 15). Drivers by points: if/else 21 (26 pts), ternaries 5 (10 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"f092438f24e0096e0e49bf2b2f89f8f520111fdbf55ebdf9fce53ea8fad30427"}},{"ruleId":"D2","level":"warning","message":{"text":"QuarticRealPolynomial.original (cognitive 38): QuarticRealPolynomial.original has cognitive complexity 38 (threshold 15). Drivers by points: if/else 15 (32 pts), boolean chains 6 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/QuarticRealPolynomial.js"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"352de8d46e81c46ef944f316277fd0fd8c8d1f271198bd5e9e848b72538f57c2"}},{"ruleId":"D2","level":"warning","message":{"text":"Camera.updateMembers (cognitive 38): Camera.updateMembers has cognitive complexity 38 (threshold 15). Drivers by points: if/else 21 (28 pts), boolean chains 10 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c72e6ce0372fef3027259a5d05cc7d6416b4d058a078838dba2b0e33a08276"}},{"ruleId":"D2","level":"warning","message":{"text":"publish.publish (cognitive 37): publish.publish has cognitive complexity 37 (threshold 15). Drivers by points: if/else 22 (27 pts), boolean chains 9, ternaries 1 (nesting depth added 5). Most of this is not in the body itself: 8 of the 37 points are its own statements and the rest belongs to 7 function literals inside it that branch (lines 296, 362, 467, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tools/jsdoc/cesium_template/publish.js"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7db0fa14af4d65186364c2090dbdf1e856d398ac076b60d59be71b54eb80f6f"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonGeometry.PolygonGeometry.createGeometry (cognitive 37): PolygonGeometry.PolygonGeometry.createGeometry has cognitive complexity 37 (threshold 15). Drivers by points: if/else 10 (16 pts), ternaries 4 (11 pts), loops 3 (7 pts), boolean chains 3 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e68ce8cf5fa3fed4ca831760f3d8f21326396c42a84fe186a1f50860739be6"}},{"ruleId":"D2","level":"warning","message":{"text":"Fullscreen.Fullscreen.supportsFullscreen (cognitive 37): Fullscreen.Fullscreen.supportsFullscreen has cognitive complexity 37 (threshold 15). Drivers by points: if/else 18 (36 pts), loops 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Fullscreen.js"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a9cf77cc82190c678328d44d838539e8fa02fce2900ba2a479d684616e11bde"}},{"ruleId":"D2","level":"warning","message":{"text":"ScreenSpaceCameraController.rotateCVOnTerrain (cognitive 37): ScreenSpaceCameraController.rotateCVOnTerrain has cognitive complexity 37 (threshold 15). Drivers by points: if/else 19 (33 pts), boolean chains 4 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"2997f394cf51fa5130dfbf153f8ff4079ccbd789afaf6e0f6ceb3e64a3fab046"}},{"ruleId":"D2","level":"warning","message":{"text":"ScreenSpaceCameraController.pan3D (cognitive 37): ScreenSpaceCameraController.pan3D has cognitive complexity 37 (threshold 15). Drivers by points: if/else 18 (29 pts), boolean chains 8 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2104}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f8c0f347fcbc8031d778fcacd7de7a033a6bdfb9ed19dcdddcf48e144decf4a"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SSymbology.parseSymbol (cognitive 37): I3SSymbology.parseSymbol has cognitive complexity 37 (threshold 15). Drivers by points: if/else 9 (34 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 26). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SSymbology.js"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d20a21da8a667ce028317f3cb8aba0e25631eaf403441939b194e2817b8d04b"}},{"ruleId":"D2","level":"warning","message":{"text":"createTexture2DUpdateFunction (cognitive 37): createTexture2DUpdateFunction has cognitive complexity 37 (threshold 15). Drivers by points: if/else 15 (27 pts), boolean chains 10 (nesting depth added 12). Most of this is not in the body itself: 0 of the 37 points are its own statements and the rest belongs to one function literal inside it that branches (line 902). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"181e8033c86d23e309c03589e6274335c586457f645121c9b20654f8a816a71b"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 37): update has cognitive complexity 37 (threshold 15). Drivers by points: if/else 15 (29 pts), boolean chains 4, loops 3 (4 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"25e19de3c8edee6fd63caf0a00f1e91df11bcd0f729176963a140e1d556e04fc"}},{"ruleId":"D2","level":"warning","message":{"text":"fireTouchEvents (cognitive 37): fireTouchEvents has cognitive complexity 37 (threshold 15). Drivers by points: if/else 15 (32 pts), boolean chains 5 (nesting depth added 17). Of this number, 28 points are the body\u0027s own statements and 9 belong to one function literal inside it that branches. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/ScreenSpaceEventHandler.js"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"92434f46886eda7147e357dd278924d613f032823c8464d43bb20baddf8920cf"}},{"ruleId":"D2","level":"warning","message":{"text":"createObject (cognitive 37): createObject has cognitive complexity 37 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 6, loops 2 (5 pts), ternaries 1 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"7825133732cd28caaa07e03135f60f864b9b846018d737f0cdc16d2aa7a9f208"}},{"ruleId":"D2","level":"warning","message":{"text":"addAttribute (cognitive 37): addAttribute has cognitive complexity 37 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 9, other 7, match/switch 1 (2 pts), ternaries 2 (nesting depth added 4). Of this number, 33 points are the body\u0027s own statements and 4 belong to 7 function items inside it that branch. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce640bd76bf51e3a99612e3de414eb9b60ce79763e2a31f055c23bf43d4dd448"}},{"ruleId":"D2","level":"warning","message":{"text":"FramebufferManager.FramebufferManager.update (cognitive 36): FramebufferManager.FramebufferManager.update has cognitive complexity 36 (threshold 15). Drivers by points: if/else 13 (27 pts), boolean chains 6, loops 1 (3 pts) (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/FramebufferManager.js"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4ea1836ca1af00a4d21de9d26246108df53a278b755b09dff81fa18772177db"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTilesetSkipTraversal.traverseAndSelect (cognitive 36): Cesium3DTilesetSkipTraversal.traverseAndSelect has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (31 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTilesetSkipTraversal.js"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccbcf6dc7f649231bd70451a774c95019625e8dd8f50660d96ecc0923703867e"}},{"ruleId":"D2","level":"warning","message":{"text":"PointVisualizer.PointVisualizer.update (cognitive 36): PointVisualizer.PointVisualizer.update has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (29 pts), boolean chains 6, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PointVisualizer.js"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"24e3cfc4b406c1a103ada304fafb54c74b9bd038aab941e68bab5c2244440cf5"}},{"ruleId":"D2","level":"warning","message":{"text":"Scene.executeCommand (cognitive 36): Scene.executeCommand has cognitive complexity 36 (threshold 15). Drivers by points: if/else 16 (26 pts), boolean chains 10 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":2276}}}],"partialFingerprints":{"codehealthFindingId/v1":"391149747551ac5e833ad9986012ea46b391d1cda66ffbf533a1990e2e584d6e"}},{"ruleId":"D2","level":"warning","message":{"text":"GalleryItemStore.useGalleryItemStore (cognitive 36): GalleryItemStore.useGalleryItemStore has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 6, loops 1 (2 pts), ternaries 2 (nesting depth added 10). Most of this is not in the body itself: 0 of the 36 points are its own statements and the rest belongs to 12 function literals inside it that branch (lines 166, 108, 220, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Gallery/GalleryItemStore.ts"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"2db2c1f5b4eb249b2d597dcc6b2c2cb9c91094e1b2b971a30afb05fd2e705a57"}},{"ruleId":"D2","level":"warning","message":{"text":"DiffMatcher.lineTrimmedMatch (cognitive 36): DiffMatcher.lineTrimmedMatch has cognitive complexity 36 (threshold 15). Drivers by points: if/else 6 (18 pts), ternaries 5 (11 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c0f731aa818861bb8593630ca2095ed9f6a8ea614a1e2be4fb5306f3c4b354"}},{"ruleId":"D2","level":"warning","message":{"text":"getNetworkLinkUpdateCallback (cognitive 36): getNetworkLinkUpdateCallback has cognitive complexity 36 (threshold 15). Drivers by points: if/else 16 (25 pts), boolean chains 3, error handling 1 (3 pts), loops 3, other 2 (nesting depth added 11). Most of this is not in the body itself: 0 of the 36 points are its own statements and the rest belongs to 2 function items inside it that branch ((anonymous), (anonymous)::removeChildren). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3991}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e40a12516954a2bfe280fdc4ec8e09a0948a52c557a53cbbfcb81297bae8cfd"}},{"ruleId":"D2","level":"warning","message":{"text":"modifyForEncodedNormals (cognitive 36): modifyForEncodedNormals has cognitive complexity 36 (threshold 15). Drivers by points: ternaries 9 (19 pts), if/else 8 (11 pts), boolean chains 6 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"5763ee17bddde5bc5f4f3d8a6a018ee52e0ec378e89dc4cbcf783e41a302bc49"}},{"ruleId":"D2","level":"warning","message":{"text":"wirePolygon (cognitive 36): wirePolygon has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (21 pts), ternaries 3 (8 pts), boolean chains 4, loops 3 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"e546d70a45ee7c0f26bc005dae7a03a010af38790e53edbca51a1e09c4759d09"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryPipeline.combineGeometries (cognitive 35): GeometryPipeline.combineGeometries has cognitive complexity 35 (threshold 15). Drivers by points: loops 9 (19 pts), if/else 8 (15 pts), ternaries 1 (nesting depth added 17). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f0f95c4a1339090f903c4524dd44000c78cf06690293c6265ac8fc65d00645e"}},{"ruleId":"D2","level":"warning","message":{"text":"getStringFromTypedArray.utf8Handler (cognitive 35): getStringFromTypedArray.utf8Handler has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (34 pts), loops 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/getStringFromTypedArray.js"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"550bc462f554e9cd5ce6dd744b0bf9d9b870e86639bc921c45de34adf067a1ab"}},{"ruleId":"D2","level":"warning","message":{"text":"GeoJsonLoader.parse (cognitive 35): GeoJsonLoader.parse has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 8 (17 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/GeoJsonLoader.js"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"8141b9e265995b9b4adeb2eb4e35703a1034a9dae25154137e3641cfff5688f4"}},{"ruleId":"D2","level":"warning","message":{"text":"TileMapServiceImageryProvider.TileMapServiceImageryProvider._metadataSuccess (cognitive 35): TileMapServiceImageryProvider.TileMapServiceImageryProvider._metadataSuccess has cognitive complexity 35 (threshold 15). Drivers by points: if/else 16 (26 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TileMapServiceImageryProvider.js"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a3921b01a7522e072cb3b4c2f052cf4af099ae1461c65060eabf109489ee4ae"}},{"ruleId":"D2","level":"warning","message":{"text":"CzmlDataSource.getPropertyType (cognitive 35): CzmlDataSource.getPropertyType has cognitive complexity 35 (threshold 15). Drivers by points: if/else 30, boolean chains 5. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"73350eae802031b2c9c2747b3c028e1ae50ac0b3829613c5d6d9be625b187ebc"}},{"ruleId":"D2","level":"warning","message":{"text":"KmlDataSource.processGroundOverlay (cognitive 35): KmlDataSource.processGroundOverlay has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (34 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2619}}}],"partialFingerprints":{"codehealthFindingId/v1":"d026027f8ab253c9e41fae4b12cfd16437fa380ed20ddaea6eeda11caf713847"}},{"ruleId":"D2","level":"warning","message":{"text":"ScreenSpaceCameraController.tilt3DOnTerrain (cognitive 35): ScreenSpaceCameraController.tilt3DOnTerrain has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (31 pts), boolean chains 3, ternaries 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2550}}}],"partialFingerprints":{"codehealthFindingId/v1":"396234abb5fefd1f1d6310e2cc67ea5da7328d86bd4b02be04d45070cdc592c2"}},{"ruleId":"D2","level":"warning","message":{"text":"splitLongitudeTriangles (cognitive 35): splitLongitudeTriangles has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (17 pts), ternaries 7 (10 pts), loops 4 (6 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2411}}}],"partialFingerprints":{"codehealthFindingId/v1":"a431e4e7ef7e7c993065701f3c5d408ff22708eaea49ea4e83b2a21309736dd1"}},{"ruleId":"D2","level":"warning","message":{"text":"visitRenderedTiles (cognitive 35): visitRenderedTiles has cognitive complexity 35 (threshold 15). Drivers by points: ternaries 4 (16 pts), if/else 8 (11 pts), match/switch 2 (4 pts), boolean chains 3, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"15be859fc0b2e246d70dc5cd86041692668db20acf9c170d26d4f586bb0e3fce"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SLayer.I3SLayer._computeGeometryDefinitions (cognitive 34): I3SLayer.I3SLayer._computeGeometryDefinitions has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 4 (15 pts), boolean chains 3 (nesting depth added 21). Of this number, 28 points are the body\u0027s own statements and 6 belong to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SLayer.js"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3595c745bae779fa8a165cc66965396bc04ae36048a46d3788a46570e7ba0e"}},{"ruleId":"D2","level":"warning","message":{"text":"ApiKeyDialog.ApiKeyDialogBody (cognitive 34): ApiKeyDialog.ApiKeyDialogBody has cognitive complexity 34 (threshold 15). Drivers by points: ternaries 9 (12 pts), boolean chains 9, if/else 9, error handling 4 (nesting depth added 3). Most of this is not in the body itself: 10 of the 34 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 140, 90, 115, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ApiKeyDialog.tsx"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec84a4c96be8657639fd2f980a1ad87f145a19bd26690020ba78d33a74b9bca"}},{"ruleId":"D2","level":"warning","message":{"text":"loadPrimitive (cognitive 34): loadPrimitive has cognitive complexity 34 (threshold 15). Drivers by points: if/else 18 (25 pts), boolean chains 4, loops 2 (4 pts), other 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":2311}}}],"partialFingerprints":{"codehealthFindingId/v1":"899a44162f16c9aa2cf943ddedbb4115ab3885d291709310f2027c060c4df6bc"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTile (cognitive 34): Cesium3DTile has cognitive complexity 34 (threshold 15). Drivers by points: if/else 15 (19 pts), ternaries 8 (10 pts), boolean chains 5 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a2793741b2742c44ae8ee01008e7c096f8c2154e6fd72702d36c233afa1888"}},{"ruleId":"D2","level":"warning","message":{"text":"Billboard (cognitive 34): Billboard has cognitive complexity 34 (threshold 15). Drivers by points: other 18, if/else 11 (15 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Billboard.js"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"739d25b80007d0ed7df024e8555fd6593881117206961d33224ee3a241f34e75"}},{"ruleId":"D2","level":"warning","message":{"text":"updateDerivedCommands (cognitive 34): updateDerivedCommands has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (22 pts), other 6, boolean chains 4, loops 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeTranslucencyState.js"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"191ac4769399335a831285e3ccc7a44be370e56df8263a6bcb48c4a2f467c4ef"}},{"ruleId":"D2","level":"warning","message":{"text":"QuarticRealPolynomial.neumark (cognitive 33): QuarticRealPolynomial.neumark has cognitive complexity 33 (threshold 15). Drivers by points: if/else 17 (27 pts), boolean chains 6 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/QuarticRealPolynomial.js"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a72894da1b75b639755769be9219f4dea9b14492fecb9562ceca7e0e6d38d3"}},{"ruleId":"D2","level":"warning","message":{"text":"OrientedBoundingBox.OrientedBoundingBox.distanceSquaredTo (cognitive 33): OrientedBoundingBox.OrientedBoundingBox.distanceSquaredTo has cognitive complexity 33 (threshold 15). Drivers by points: if/else 28 (33 pts) (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrientedBoundingBox.js"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e3fa0bcc09ccee48063705233198899f26f716c40670e1ed65fbbc04c0b4298"}},{"ruleId":"D2","level":"warning","message":{"text":"CoplanarPolygonGeometry.createGeometryFromPolygon (cognitive 33): CoplanarPolygonGeometry.createGeometryFromPolygon has cognitive complexity 33 (threshold 15). Drivers by points: if/else 17 (26 pts), ternaries 4, boolean chains 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CoplanarPolygonGeometry.js"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89b4992b74987b57abfb6f24357a42f82f53b249d733cdc892da991619871d2"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineCollection.PolylineBucket.writeForMorph (cognitive 33): PolylineCollection.PolylineBucket.writeForMorph has cognitive complexity 33 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 3 (6 pts), ternaries 2 (6 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21a1135af33e25152effb495e04ffa22f89066755a89c2841cc91048b1f9ce4"}},{"ruleId":"D2","level":"warning","message":{"text":"Vector3DTileContent.getBatchIds (cognitive 33): Vector3DTileContent.getBatchIds has cognitive complexity 33 (threshold 15). Drivers by points: boolean chains 13, if/else 8 (11 pts), loops 3 (9 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileContent.js"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"4418cea35e54225bdc4050b90819c967fa0d884d299c08a90c95b88a50b0248f"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertClassification.InvertClassification.update (cognitive 33): InvertClassification.InvertClassification.update has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 9, ternaries 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/InvertClassification.js"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0677d40b88dac61d47caf7285a4f93eb6deae3ba18f6dbe91408612da97b8e"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeI3S.generateGltfBuffer (cognitive 33): decodeI3S.generateGltfBuffer has cognitive complexity 33 (threshold 15). Drivers by points: if/else 18 (20 pts), ternaries 6, loops 3 (5 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac879b284a2bdef31000d046b9238c6cbd4f7ff597c908696f5a9ba41b8bfec"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeI3S.decodeDracoEncodedGeometry (cognitive 33): decodeI3S.decodeDracoEncodedGeometry has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (24 pts), loops 3 (8 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a46089920db7ed9096e6800f8edf239af3dacbc052684fe664afecba4d827a"}},{"ruleId":"D2","level":"warning","message":{"text":"processLineStringOrLinearRing (cognitive 33): processLineStringOrLinearRing has cognitive complexity 33 (threshold 15). Drivers by points: if/else 11 (17 pts), ternaries 4 (11 pts), boolean chains 4, other 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1573}}}],"partialFingerprints":{"codehealthFindingId/v1":"53418b1346c59b9fd6ddd60b2a63bd173989b299cc846a876daa4e2331bdb5ce"}},{"ruleId":"D2","level":"warning","message":{"text":"parse (cognitive 33): parse has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 2 (6 pts), ternaries 2 (4 pts), boolean chains 1, other 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":3183}}}],"partialFingerprints":{"codehealthFindingId/v1":"effeb7aad8a0f1f771b6b2fc1e7c144985e1ec369f1779d4a4096d868b3be2bc"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 33): update has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 3 (7 pts), boolean chains 5, ternaries 1 (2 pts) (nesting depth added 14). Of this number, 28 points are the body\u0027s own statements and 5 belong to 4 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPolylinePrimitive.js"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"813b870432c03c46aa95671f21c5c72301d67a16d3c3746ffeb426fd064b96e7"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 33): update has cognitive complexity 33 (threshold 15). Drivers by points: boolean chains 13, if/else 9 (13 pts), loops 5 (7 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStageCollection.js"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d5a205581fa77b762600aaeba9d425a9cbe0b0f881740903f4c593273329f95"}},{"ruleId":"D2","level":"warning","message":{"text":"packCreateGeometryResults (cognitive 33): packCreateGeometryResults has cognitive complexity 33 (threshold 15). Drivers by points: if/else 6 (15 pts), ternaries 5 (11 pts), loops 3 (5 pts), boolean chains 1, other 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d359f7bf41952d3fe593a0403d867b1e06ce7981aef64a69d2b9a995c65569"}},{"ruleId":"D2","level":"warning","message":{"text":"WebMapServiceImageryProvider (cognitive 33): WebMapServiceImageryProvider has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 6, other 6, ternaries 2 (4 pts) (nesting depth added 6). Of this number, 31 points are the body\u0027s own statements and 2 belong to 2 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/WebMapServiceImageryProvider.js"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"b517609fa260ffab9818f1727f26f9fbfffc42cf77ec46a841efe2864555aace"}},{"ruleId":"D2","level":"warning","message":{"text":"CorridorGeometryLibrary.CorridorGeometryLibrary.computePositions (cognitive 32): CorridorGeometryLibrary.CorridorGeometryLibrary.computePositions has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (27 pts), boolean chains 2, ternaries 2, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometryLibrary.js"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e6c30e460c39ab3c722cceb02f3c6999dfcd7b80a93b2a4fb762c79eb43910"}},{"ruleId":"D2","level":"warning","message":{"text":"CorridorOutlineGeometry.combine (cognitive 32): CorridorOutlineGeometry.combine has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 9 (16 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorOutlineGeometry.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4704a85bb1f9ac79c30c853d9e7b4ef20a8f2ba62895120dd816980e6562c4c"}},{"ruleId":"D2","level":"warning","message":{"text":"ArcGISTiledElevationTerrainProvider.findRange (cognitive 32): ArcGISTiledElevationTerrainProvider.findRange has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 3 (7 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/ArcGISTiledElevationTerrainProvider.js"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"cada2efe7d1863cfaaa8cdfe26bfa620d163844e0daaa0668bd7e79a6b0d98ef"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTileFeature.getPropertyInherited (cognitive 32): Cesium3DTileFeature.getPropertyInherited has cognitive complexity 32 (threshold 15). Drivers by points: if/else 19 (31 pts), ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileFeature.js"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f8458c471016fa4f5d691a6e6cccf32db71bb39da7491c22626a1501f03f84f"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelRuntimePrimitive.ModelRuntimePrimitive.configurePipeline (cognitive 32): ModelRuntimePrimitive.ModelRuntimePrimitive.configurePipeline has cognitive complexity 32 (threshold 15). Drivers by points: if/else 17 (18 pts), boolean chains 14 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"167741f5d299996e700503c31ce8bf29d37618ad47516badfbebee9a7891f638"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineCollection.createVertexArrays (cognitive 32): PolylineCollection.createVertexArrays has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (26 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1d808f72fee8680b3c97deb94d0220626ce5bd90ff78cecec47b6b3f3b6254"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTile.applyDebugSettings (cognitive 32): Cesium3DTile.applyDebugSettings has cognitive complexity 32 (threshold 15). Drivers by points: if/else 17 (21 pts), boolean chains 11 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":2157}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc3ce76d5c25f449c235a7124d43b1ce616464d3f67f0768694a9ac820c287b"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryVisualizer.GeometryVisualizer._insertUpdaterIntoBatch (cognitive 32): GeometryVisualizer.GeometryVisualizer._insertUpdaterIntoBatch has cognitive complexity 32 (threshold 15). Drivers by points: if/else 20 (31 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeometryVisualizer.js"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d3411cbfd20a620ee254c2f639ed8405c6a7f75390f8a37fd3cec8548328a36"}},{"ruleId":"D2","level":"warning","message":{"text":"AnimationViewModel.AnimationViewModel (cognitive 32): AnimationViewModel.AnimationViewModel has cognitive complexity 32 (threshold 15). Drivers by points: if/else 19 (20 pts), boolean chains 12 (nesting depth added 1). Most of this is not in the body itself: 3 of the 32 points are its own statements and the rest belongs to 12 function literals inside it that branch (lines 238, 198, 168, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/AnimationViewModel.js"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad337a07a9aee9935b24829450da7b102db7b55a0c6d95dadc96bd7d95fecfa"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 32): update has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (23 pts), boolean chains 4, error handling 1 (3 pts), loops 1, other 1 (nesting depth added 12). Most of this is not in the body itself: 6 of the 32 points are its own statements and the rest belongs to 3 function items inside it that branch ((anonymous), recurseIgnoreEntities, (anonymous)::(anonymous)). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3845}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ce7bd7afa9a8df8eb9235116570e7bba97c1a4f12a92d9067f161e96547cfd"}},{"ruleId":"D2","level":"warning","message":{"text":"Label (cognitive 32): Label has cognitive complexity 32 (threshold 15). Drivers by points: other 18, if/else 9 (13 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"b246e00d1be09b43ef973afaa813768c82174ebfb4beffe658de68a12c1da79f"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryPipeline.GeometryPipeline.reorderForPreVertexCache (cognitive 31): GeometryPipeline.GeometryPipeline.reorderForPreVertexCache has cognitive complexity 31 (threshold 15). Drivers by points: loops 5 (16 pts), if/else 6 (14 pts), boolean chains 1 (nesting depth added 19). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"f35c5b17ce6123c8a3213cda89707d97b3bcab247b355a261510ac3a3693b193"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineVolumeGeometryLibrary.PolylineVolumeGeometryLibrary.computePositions (cognitive 31): PolylineVolumeGeometryLibrary.PolylineVolumeGeometryLibrary.computePositions has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (22 pts), ternaries 5 (6 pts), boolean chains 2, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineVolumeGeometryLibrary.js"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"47783b6f76fbdb3fb2ea92d584ae374c41d73c151b7d6d0ba816552ed4782b4b"}},{"ruleId":"D2","level":"warning","message":{"text":"TimeIntervalCollection.TimeIntervalCollection.removeInterval (cognitive 31): TimeIntervalCollection.TimeIntervalCollection.removeInterval has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 13, loops 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d6411c9f9c53d5be161d749db66ba405f2cf0d18334e6109d8f8d0f1a3f4af"}},{"ruleId":"D2","level":"warning","message":{"text":"TileAvailability.findMaxLevelFromNode (cognitive 31): TileAvailability.findMaxLevelFromNode has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (22 pts), boolean chains 5, loops 3 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/TileAvailability.js"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f6b8bdc7c193e6e6d93253b549626d3fb8c04de2798321d7ca3869160a5c220"}},{"ruleId":"D2","level":"warning","message":{"text":"CesiumTerrainProvider.createQuantizedMeshTerrainData (cognitive 31): CesiumTerrainProvider.createQuantizedMeshTerrainData has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 4 (13 pts), boolean chains 3 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e054c115a1623ffd51abb6f24cc8b9f377ccb80483f4af6b50557655a025455"}},{"ruleId":"D2","level":"warning","message":{"text":"Vector3DTileContent.initialize (cognitive 31): Vector3DTileContent.initialize has cognitive complexity 31 (threshold 15). Drivers by points: if/else 19 (27 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileContent.js"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"e91d0ac00dd8bd934005d1257c234b5616b9de1c83d9325752dc698a41cdd8f7"}},{"ruleId":"D2","level":"warning","message":{"text":"CreditDisplay.displayCredits (cognitive 31): CreditDisplay.displayCredits has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (29 pts), loops 2 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CreditDisplay.js"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"2871daf7c5614b8dfaebb03f7fc13e246a0ba4580b0db3d92871f385e6587acd"}},{"ruleId":"D2","level":"warning","message":{"text":"ShadowMapShader.ShadowMapShader.createShadowReceiveFragmentShader (cognitive 31): ShadowMapShader.ShadowMapShader.createShadowReceiveFragmentShader has cognitive complexity 31 (threshold 15). Drivers by points: if/else 18 (20 pts), boolean chains 7, ternaries 2 (3 pts), loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMapShader.js"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"3191b0220367d9e587256317f5215056b38296ed558b3c8016335a24a6d18e53"}},{"ruleId":"D2","level":"warning","message":{"text":"ScreenSpaceCameraController.spin3D (cognitive 31): ScreenSpaceCameraController.spin3D has cognitive complexity 31 (threshold 15). Drivers by points: if/else 19 (30 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":1908}}}],"partialFingerprints":{"codehealthFindingId/v1":"1add03dc881c434b9d56c911bd7757de14a3a0b7c2dff0cff3a565fde78b56df"}},{"ruleId":"D2","level":"warning","message":{"text":"VoxelRenderResources.VoxelRenderResources (cognitive 31): VoxelRenderResources.VoxelRenderResources has cognitive complexity 31 (threshold 15). Drivers by points: if/else 20 (26 pts), boolean chains 2, loops 2, ternaries 1 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelRenderResources.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"1febbc2d97d5a3ceb2e9b4aad13315cf63679e2489989c4ce91801afead57d5d"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeSurfaceTileProvider.canRenderWithoutLosingDetail (cognitive 31): GlobeSurfaceTileProvider.canRenderWithoutLosingDetail has cognitive complexity 31 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 7, loops 4 (7 pts), ternaries 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ffa21b7ccec83236bbfbb47a3ce789001dade3062fcfc6f729c90b36a931aa"}},{"ruleId":"D2","level":"warning","message":{"text":"arrayRemoveDuplicates.arrayRemoveDuplicates (cognitive 30): arrayRemoveDuplicates.arrayRemoveDuplicates has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (27 pts), boolean chains 1, loops 1, ternaries 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/arrayRemoveDuplicates.js"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d3696174de5018ce00f2c86779e7c7a23f26fb186076ec2a516d434017ab18"}},{"ruleId":"D2","level":"warning","message":{"text":"RectangleGeometry.calculateAttributesWall (cognitive 30): RectangleGeometry.calculateAttributesWall has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (23 pts), ternaries 3, boolean chains 2, loops 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"52b45300136d50cf23166e4b3fb402e1138715675053714e718c9cec288529da"}},{"ruleId":"D2","level":"warning","message":{"text":"GroundPrimitive.updateAndQueueCommands (cognitive 30): GroundPrimitive.updateAndQueueCommands has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 3 (7 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPrimitive.js"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5b065e91aef9cb68708d8529d6357d9b3cc1fa503bfded51c32abd281c668ed"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTilesetBaseTraversal.updateAndPushChildren (cognitive 30): Cesium3DTilesetBaseTraversal.updateAndPushChildren has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 6, loops 3 (4 pts), ternaries 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTilesetBaseTraversal.js"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"810f5d3d696546cc4970a2c3b2bc917a0608e3e629f73f07d3698e858585a1ba"}},{"ruleId":"D2","level":"warning","message":{"text":"CameraEventAggregator.listenMouseMove (cognitive 30): CameraEventAggregator.listenMouseMove has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (28 pts), loops 2 (nesting depth added 19). Most of this is not in the body itself: 14 of the 30 points are its own statements and the rest belongs to one function literal inside it that branches (line 330). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CameraEventAggregator.js"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"7919530b659ccc2fa43c33162532f8cfd280df228d9a4ffd8d05ae4e8adb3450"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeSurfaceTileProvider.computeTileVisibility (cognitive 30): GlobeSurfaceTileProvider.computeTileVisibility has cognitive complexity 30 (threshold 15). Drivers by points: if/else 19 (24 pts), boolean chains 6 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8c58776fdfdf320367548e89ca7e250f68682622d20df7da4016bcd05ef9ddf"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SGeometry.I3SGeometry.getClosestPointIndexOnTriangle (cognitive 30): I3SGeometry.I3SGeometry.getClosestPointIndexOnTriangle has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (25 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SGeometry.js"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"43da222014c9eb2a9370d9a6f0f90f829458db9f09ff27d6a3a18c7746ecf537"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SNode.I3SNode._create3DTileDefinition (cognitive 30): I3SNode.I3SNode._create3DTileDefinition has cognitive complexity 30 (threshold 15). Drivers by points: if/else 16 (21 pts), loops 3 (5 pts), boolean chains 3, ternaries 1 (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SNode.js"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebffc72de9c880fc99f5eb2c4a1547d3d7d5dd0f0d1e1b2d2eb89d688d66171"}},{"ruleId":"D2","level":"warning","message":{"text":"createVectorTilePolygons.createVectorTilePolygons (cognitive 30): createVectorTilePolygons.createVectorTilePolygons has cognitive complexity 30 (threshold 15). Drivers by points: loops 11 (15 pts), if/else 8 (12 pts), boolean chains 2, ternaries 1 (nesting depth added 8). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTilePolygons.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc58debf1a94799155629bd88693be459ff279aa92b63ce440d8bd6c5364a2d"}},{"ruleId":"D2","level":"warning","message":{"text":"Viewer.Viewer.resize (cognitive 30): Viewer.Viewer.resize has cognitive complexity 30 (threshold 15). Drivers by points: if/else 15 (24 pts), boolean chains 6 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":1575}}}],"partialFingerprints":{"codehealthFindingId/v1":"d13586137bb80619fb0b49a8dc7332f171724fddd2a2bf4dd39db929e7d66698"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 30): update has cognitive complexity 30 (threshold 15). Drivers by points: if/else 18 (24 pts), boolean chains 4, ternaries 2 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e4ca136fd8795fb1458f1c5ceef89b4d054952026c82fa45f0b41eb78eafc8"}},{"ruleId":"D2","level":"warning","message":{"text":"createInstances (cognitive 30): createInstances has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (20 pts), loops 3 (4 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/I3dmLoader.js"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"a416fccd8cefd71ed6bdb81465b7370624656807d63041cf0c4408d98017a86f"}},{"ruleId":"D2","level":"warning","message":{"text":"CubicRealPolynomial.CubicRealPolynomial.computeRealRoots (cognitive 29): CubicRealPolynomial.CubicRealPolynomial.computeRealRoots has cognitive complexity 29 (threshold 15). Drivers by points: if/else 17 (26 pts), ternaries 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CubicRealPolynomial.js"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa4dd9e59a9f3c26690893858860c06f1c2e2a539d355e79d02f0d88a4c918c4"}},{"ruleId":"D2","level":"warning","message":{"text":"ShadowMap.applyDebugSettings (cognitive 29): ShadowMap.applyDebugSettings has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 7, loops 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":929}}}],"partialFingerprints":{"codehealthFindingId/v1":"9361cef29f8f54afe1c1a172269c505f60b145e27baf6951950cbaf8d7e92691"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SDataProvider.addLayers (cognitive 29): I3SDataProvider.addLayers has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (21 pts), loops 2 (6 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SDataProvider.js"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"381f1418face7483d0476fecd869e2b4fc3316351f0bc44add5d3196169c6abc"}},{"ruleId":"D2","level":"warning","message":{"text":"DiffMatcher.contextBasedMatch (cognitive 29): DiffMatcher.contextBasedMatch has cognitive complexity 29 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 3 (6 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"b326414977473046d93b1d52c5bc1841f595b24c43b2c8853aa036422476ef5c"}},{"ruleId":"D2","level":"warning","message":{"text":"look3D (cognitive 29): look3D has cognitive complexity 29 (threshold 15). Drivers by points: if/else 15 (20 pts), boolean chains 6, ternaries 2, other 1 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2751}}}],"partialFingerprints":{"codehealthFindingId/v1":"b868aa23b50570eea26fabb01f971685096f990128f082107f226864a05d54a3"}},{"ruleId":"D2","level":"warning","message":{"text":"ShadowMap (cognitive 29): ShadowMap has cognitive complexity 29 (threshold 15). Drivers by points: other 13, if/else 10, boolean chains 3, ternaries 2, loops 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"325663a721755def9eea2bc189bf46bce91eb051a7f9a4b93daf4ff3b2bc2b36"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonGeometryLibrary.PolygonGeometryLibrary.polygonOutlinesFromHierarchy (cognitive 28): PolygonGeometryLibrary.PolygonGeometryLibrary.polygonOutlinesFromHierarchy has cognitive complexity 28 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 5 (13 pts), ternaries 1 (2 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"29e6bd7155bee0d64486f13c80464bc87ee44397aaa2772a8777dffe3e35624e"}},{"ruleId":"D2","level":"warning","message":{"text":"HermitePolynomialApproximation.interpolateOrderZero (cognitive 28): HermitePolynomialApproximation.interpolateOrderZero has cognitive complexity 28 (threshold 15). Drivers by points: loops 10 (18 pts), if/else 4 (9 pts), boolean chains 1 (nesting depth added 13). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/HermitePolynomialApproximation.js"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0c77a51628f15ab076842b69e2c4a0e5142854c7d485884aaf13423a842a06f"}},{"ruleId":"D2","level":"warning","message":{"text":"VertexArray.interleaveAttributes (cognitive 28): VertexArray.interleaveAttributes has cognitive complexity 28 (threshold 15). Drivers by points: loops 7 (15 pts), if/else 6 (12 pts), boolean chains 1 (nesting depth added 14). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb37c6777183284c928b1daa958bbcb0e877b163d7f75f99233c3b5a3c41390"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassificationPrimitive.updateAndQueueCommands (cognitive 28): ClassificationPrimitive.updateAndQueueCommands has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 3 (7 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClassificationPrimitive.js"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a4a2157d9ed27fa352f95822887d457fe59621ba83f9bad5970eac3361545c"}},{"ruleId":"D2","level":"warning","message":{"text":"pickModel.pickModel (cognitive 28): pickModel.pickModel has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 4, loops 2 (3 pts), ternaries 1 (nesting depth added 9). Most of this is not in the body itself: 5 of the 28 points are its own statements and the rest belongs to one function literal inside it that branches (line 93). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/pickModel.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"279fa2baa46946c134d88973c54e26f1e985ed67f4c1c57d36025f14b9a8df34"}},{"ruleId":"D2","level":"warning","message":{"text":"CompositeEntityCollection.CompositeEntityCollection._onCollectionChanged (cognitive 28): CompositeEntityCollection.CompositeEntityCollection._onCollectionChanged has cognitive complexity 28 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 4 (6 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CompositeEntityCollection.js"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffcdfddde47efe508185f00255fa3302226c77f6236b2d31f3337c033aa226a7"}},{"ruleId":"D2","level":"warning","message":{"text":"GeoJsonDataSource.createPolygon (cognitive 28): GeoJsonDataSource.createPolygon has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (24 pts), boolean chains 3, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"83baec9060cdc32188579fa1f34e9b6a75a9843fc95d7c71b7d364b47590addd"}},{"ruleId":"D2","level":"warning","message":{"text":"TerrainFillMesh.addEdgeMesh (cognitive 28): TerrainFillMesh.addEdgeMesh has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 7, ternaries 1 (2 pts), loops 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d6f9035b2137c79344fc98739d1cd01d7fd14980747d29506e428cf665f9fd"}},{"ruleId":"D2","level":"warning","message":{"text":"ParticleSystem.ParticleSystem.update (cognitive 28): ParticleSystem.ParticleSystem.update has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (19 pts), loops 3 (7 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ParticleSystem.js"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ae2daece00764ec4dcf78a9e0062d1ac9d5256d795c7794ee67be559c60ce52"}},{"ruleId":"D2","level":"warning","message":{"text":"coreMigrationShared.getEngineDependentRootSpecHelpers (cognitive 28): coreMigrationShared.getEngineDependentRootSpecHelpers has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 5 (9 pts), boolean chains 2 (nesting depth added 15). Of this number, 27 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/coreMigrationShared.js"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"671eb5fac0aff08400f2e265c678b42feb596613d3dca424535999838fcc9142"}},{"ruleId":"D2","level":"warning","message":{"text":"_onLayerAdded (cognitive 28): _onLayerAdded has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (23 pts), boolean chains 2, loops 1 (2 pts), other 1 (nesting depth added 13). Most of this is not in the body itself: 4 of the 28 points are its own statements and the rest belongs to 3 function items inside it that branch (reloadFunction::(anonymous), (anonymous), reloadFunction). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5df0626efbe20642032747ae9f1f52a0350b7e6e0a0b38b5954c7c838119427"}},{"ruleId":"D2","level":"warning","message":{"text":"setShuttleRingFromMouseOrTouch (cognitive 28): setShuttleRingFromMouseOrTouch has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 12 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/Animation.js"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55cacea0f109d28ec4e1c25533f40fd5f7ea9d0697069c36992f10c04df46b5"}},{"ruleId":"D2","level":"warning","message":{"text":"WebMapTileServiceImageryProvider (cognitive 28): WebMapTileServiceImageryProvider has cognitive complexity 28 (threshold 15). Drivers by points: if/else 15 (18 pts), other 6, boolean chains 4 (nesting depth added 3). Of this number, 26 points are the body\u0027s own statements and 2 belong to 2 function items inside it that branch. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/WebMapTileServiceImageryProvider.js"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"b18a20f83e7c1b0fc31cd8a65f040f2549ff61d20d6d71ea62b8e3cb141c2700"}},{"ruleId":"D2","level":"warning","message":{"text":"constructor (cognitive 28): constructor has cognitive complexity 28 (threshold 15). Drivers by points: ternaries 3 (9 pts), loops 4 (7 pts), if/else 5 (6 pts), other 5, boolean chains 1 (nesting depth added 10). Of this number, 27 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GeoJsonPrimitive.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e703abfa3b391e491e844cad28a42157373b3ea64cf244318c45eedc56c348"}},{"ruleId":"D2","level":"warning","message":{"text":"createGeometry (cognitive 28): createGeometry has cognitive complexity 28 (threshold 15). Drivers by points: if/else 7 (14 pts), ternaries 2 (9 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonOutlineGeometry.js"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec9e4e963abe5b80d68305e92e8a612c2ae46a080a265853d8c755e99005cdbb"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineVolumeGeometry.computeAttributes (cognitive 27): PolylineVolumeGeometry.computeAttributes has cognitive complexity 27 (threshold 15). Drivers by points: loops 7 (13 pts), if/else 7 (10 pts), boolean chains 2, error handling 1 (2 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineVolumeGeometry.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a5515d90d390e517c5d06b338140812bcf8553fda6af4f1b51fc3b327ec069"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageryLayerCollection.pickModelFeatures (cognitive 27): ImageryLayerCollection.pickModelFeatures has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (20 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayerCollection.js"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fef9e1c8184dde41c927f9c8b149be8b8e2f179b1a087922ee79781c2c2fe1b"}},{"ruleId":"D2","level":"warning","message":{"text":"GeoJsonDataSource.load (cognitive 27): GeoJsonDataSource.load has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (25 pts), boolean chains 1, ternaries 1 (nesting depth added 10). Of this number, 25 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7786a24cbef7be58a4ef3375e42d76d075b17302227bfbbbc6ca66d2250e7f2"}},{"ruleId":"D2","level":"warning","message":{"text":"TimeDynamicPointCloud.TimeDynamicPointCloud.update (cognitive 27): TimeDynamicPointCloud.TimeDynamicPointCloud.update has cognitive complexity 27 (threshold 15). Drivers by points: if/else 19 (20 pts), boolean chains 7 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TimeDynamicPointCloud.js"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5e356dbbe7ea92a4759f8c383b07e0f145e51e863504f3a122a4d714dc344f"}},{"ruleId":"D2","level":"warning","message":{"text":"createVectorTilePolylines.createVectorTilePolylines (cognitive 27): createVectorTilePolylines.createVectorTilePolylines has cognitive complexity 27 (threshold 15). Drivers by points: ternaries 4 (11 pts), if/else 5 (9 pts), loops 4 (7 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTilePolylines.js"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"a83515365932b61eda6e96747fb97d2ff955be9de7c2e984079d8ce93e958f59"}},{"ruleId":"D2","level":"warning","message":{"text":"main.viewer.screenSpaceEventHandler.setInputAction() (cognitive 27): main.viewer.screenSpaceEventHandler.setInputAction() has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 1 (4 pts), boolean chains 2 (nesting depth added 17). Most of this is not in the body itself: 5 of the 27 points are its own statements and the rest belongs to one function literal inside it that branches (line 66). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/i3s-3d-object-layer/main.js"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"99992934cdf9b4c73485a492088e579c31cc58cdeb35aaebbf601cdc33fb4bcb"}},{"ruleId":"D2","level":"warning","message":{"text":"main.viewer.screenSpaceEventHandler.setInputAction() (cognitive 27): main.viewer.screenSpaceEventHandler.setInputAction() has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 1 (4 pts), boolean chains 2 (nesting depth added 17). Most of this is not in the body itself: 5 of the 27 points are its own statements and the rest belongs to one function literal inside it that branches (line 66). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/i3s-feature-picking/main.js"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf928465a67414a11e49924a1cf289d316999397fbc680861a23109d8655288"}},{"ruleId":"D2","level":"warning","message":{"text":"destroy (cognitive 27): destroy has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 23, if/else 3, loops 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":5513}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33509b1eeaa8daa5fc648635901e1924dcab0cd656c18de475fc3c8e7f3858e"}},{"ruleId":"D2","level":"warning","message":{"text":"load (cognitive 27): load has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (13 pts), error handling 2 (3 pts), loops 1 (3 pts), other 3, ternaries 1 (3 pts), boolean chains 2 (nesting depth added 10). Most of this is not in the body itself: 13 of the 27 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 3398, 3386, 3388, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3353}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8a77657a7b681b8577240aeb1ceb8f90b9d6543849527b74489bed2716613aa"}},{"ruleId":"D2","level":"warning","message":{"text":"_updateCameraChanged (cognitive 27): _updateCameraChanged has cognitive complexity 27 (threshold 15). Drivers by points: if/else 16 (21 pts), boolean chains 4, ternaries 2 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0f4ffd9cc2e3c33d7fe6e026331fdd69f795c66d84f90d4707c646adb3aeac6"}},{"ruleId":"D2","level":"warning","message":{"text":"adjustHeightForTerrain (cognitive 27): adjustHeightForTerrain has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 4, other 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2911}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c530f09e43f16ce189cdae2103486fdeed007f582ce33ecf4662d549f7a02d9"}},{"ruleId":"D2","level":"warning","message":{"text":"fromVertices (cognitive 27): fromVertices has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (22 pts), loops 2, other 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"766d467bb5d2fa5fc0fab7e8fb3f963a72dcf40ac7c083203dabcadda92f247e"}},{"ruleId":"D2","level":"warning","message":{"text":"pickPositionWorldCoordinates (cognitive 27): pickPositionWorldCoordinates has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (21 pts), ternaries 1 (4 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Picking.js"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"515bb8733c1a8734d528f346638437a0b6d3fcde64d206e226aed01bc9edccfe"}},{"ruleId":"D2","level":"warning","message":{"text":"process (cognitive 27): process has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (19 pts), boolean chains 8 (nesting depth added 4). Of this number, 24 points are the body\u0027s own statements and 3 belong to 2 function items inside it that branch. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/MaterialPipelineStage.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa4b79e8e5011fc2242ed2282651c4f8eb3b38145d7e3e456370ccfe26f24b8c"}},{"ruleId":"D2","level":"warning","message":{"text":"Clock.Clock.tick (cognitive 26): Clock.Clock.tick has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 1 (4 pts), boolean chains 1 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Clock.js"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"5553a594a7517787f3843333789a7f43ac632646abb06ef5e93eb9a07cf00765"}},{"ruleId":"D2","level":"warning","message":{"text":"Resource.Resource._Implementations.loadWithXhr (cognitive 26): Resource.Resource._Implementations.loadWithXhr has cognitive complexity 26 (threshold 15). Drivers by points: boolean chains 14, if/else 8 (10 pts), loops 1 (2 pts) (nesting depth added 3). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":2099}}}],"partialFingerprints":{"codehealthFindingId/v1":"0649d7be11deab0c5b1150f5a6366e6a05615d25bb39e5ded6b9d96859b169eb"}},{"ruleId":"D2","level":"warning","message":{"text":"ShaderProgram.createAndLinkProgram (cognitive 26): ShaderProgram.createAndLinkProgram has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/ShaderProgram.js"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"b401a65174c305227e825c1baf8c3a88d00ace460a1d9e089c05692894af3556"}},{"ruleId":"D2","level":"warning","message":{"text":"VectorPipeline.packPolygonGrid (cognitive 26): VectorPipeline.packPolygonGrid has cognitive complexity 26 (threshold 15). Drivers by points: loops 9 (17 pts), if/else 2 (9 pts) (nesting depth added 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VectorPipeline.js"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93158bc2f22002acaf40e814340ecddc51bee33c5c6fd6c492865e7bc08a8dd"}},{"ruleId":"D2","level":"warning","message":{"text":"Material.createMethodDefinition (cognitive 26): Material.createMethodDefinition has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (15 pts), ternaries 1 (6 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2153b1e703bfe2800f8455d8493d412799f3b0e61d0c0bdcd5111122b58d2ee"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitivePipeline.PrimitivePipeline.combineGeometry (cognitive 26): PrimitivePipeline.PrimitivePipeline.combineGeometry has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (21 pts), boolean chains 4, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"61ab808fd1f8276c7125fa823248a9e8b2ddebc9489e402224a3610d152458c4"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryUpdater.GeometryUpdater._onEntityPropertyChanged (cognitive 26): GeometryUpdater.GeometryUpdater._onEntityPropertyChanged has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 9, ternaries 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeometryUpdater.js"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6fc7ea9084c453a73d571f77f6ccd3fb66a96fa5c29ce2c58063c4545cbf04"}},{"ruleId":"D2","level":"warning","message":{"text":"ArcGisMapServerImageryProvider.metadataSuccess (cognitive 26): ArcGisMapServerImageryProvider.metadataSuccess has cognitive complexity 26 (threshold 15). Drivers by points: if/else 14 (22 pts), boolean chains 4 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ArcGisMapServerImageryProvider.js"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d67dd429350b0bb1c640536177cf8f26234778f8c2479035a5a0cc9f84a51d0"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineCollection.PolylineBucket.updateIndices (cognitive 26): PolylineCollection.PolylineBucket.updateIndices has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 3 (8 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1644}}}],"partialFingerprints":{"codehealthFindingId/v1":"065b511d80a33cd618f7254507437995be5614062d9d228859471eacdab59815"}},{"ruleId":"D2","level":"warning","message":{"text":"GaussianSplatPrimitive.processGeneratedSplatTextureData (cognitive 26): GaussianSplatPrimitive.processGeneratedSplatTextureData has cognitive complexity 26 (threshold 15). Drivers by points: if/else 14 (20 pts), loops 1 (3 pts), boolean chains 2, error handling 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GaussianSplatPrimitive.js"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a801bdec8e66572cd760f4f5e3eb6abab86fdc75786e37385afc45fbc1037c0"}},{"ruleId":"D2","level":"warning","message":{"text":"ScreenSpaceInputBindings.registerDragInputBindings (cognitive 26): ScreenSpaceInputBindings.registerDragInputBindings has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (23 pts), loops 2, boolean chains 1 (nesting depth added 15). Most of this is not in the body itself: 6 of the 26 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 111, 124, 139, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Controllers/ScreenSpaceInputBindings.js"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a915157608458599b2a5dc207515634e5ea2213ab642078b71be8bd0c3207c53"}},{"ruleId":"D2","level":"warning","message":{"text":"Picking.addDrillPickedResults (cognitive 26): Picking.addDrillPickedResults has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (22 pts), boolean chains 3, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Picking.js"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d2ef53997d773818c1ec3a1d48fa37f6398f92db6d1aaf971073cbc8187911a"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SField.I3SField._validateBody (cognitive 26): I3SField.I3SField._validateBody has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 2 (5 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SField.js"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a00195fbce502eb32188dfffac0dd781521b2f71050e32a74b6e3d58afe85fd"}},{"ruleId":"D2","level":"warning","message":{"text":"createElevationBandMaterial.preprocess (cognitive 26): createElevationBandMaterial.preprocess has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 3 (5 pts), boolean chains 4 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/createElevationBandMaterial.js"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"81fe639b665906e6a1fc953c745b6b00612d9386f66e69936db958212bbaa06c"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeI3S.generateIndexArray (cognitive 26): decodeI3S.generateIndexArray has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 4 (10 pts), boolean chains 3, ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ef24795e8719d9e95c07212759f7d7a86766f3d467b635d12bbed646dd3209"}},{"ruleId":"D2","level":"warning","message":{"text":"transcodeKTX2.transcodeCompressed (cognitive 26): transcodeKTX2.transcodeCompressed has cognitive complexity 26 (threshold 15). Drivers by points: if/else 19 (22 pts), boolean chains 3, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/transcodeKTX2.js"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"8190cab8dbfff37ae968f8a5ea11d0a3f460507a3abaf52823a75537860c9f65"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 26): update has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 7, error handling 1, other 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"86283b9492d3e24f7d6778fc6707d52345398fdfd3ba41644ed4c3d522ffbf7e"}},{"ruleId":"D2","level":"warning","message":{"text":"BoundingSphere.fromPoints (cognitive 25): BoundingSphere.fromPoints has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (22 pts), loops 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b798bb6176325a059d24a580aaeeaa2c8917d995b44edde78a15b5409470e2"}},{"ruleId":"D2","level":"warning","message":{"text":"BoundingSphere.fromEncodedCartesianVertices (cognitive 25): BoundingSphere.fromEncodedCartesianVertices has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (22 pts), loops 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"271798f6f6827746d9c55832921d0de03e04932eeef206e1674e02a3f3366b33"}},{"ruleId":"D2","level":"warning","message":{"text":"Spline.Spline.findTimeInterval (cognitive 25): Spline.Spline.findTimeInterval has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 6, loops 2 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Spline.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"88a52549f92d3cecc35378e396032982a7ae16e3d5cf207413e864980ee630db"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryPipeline.splitLongitudeLines (cognitive 25): GeometryPipeline.splitLongitudeLines has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (22 pts), loops 2, ternaries 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2651}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9c7e7daab20c50cace16859a06ab4cf5b6dad53ba966c046d32403608833b41"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonOutlineGeometry.createGeometryFromPositionsExtruded (cognitive 25): PolygonOutlineGeometry.createGeometryFromPositionsExtruded has cognitive complexity 25 (threshold 15). Drivers by points: loops 7 (15 pts), if/else 7 (10 pts) (nesting depth added 11). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonOutlineGeometry.js"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"306cfdda52437892a21e8766f33a37f5d78fb3090dcd9fea216bc9fcf3982774"}},{"ruleId":"D2","level":"warning","message":{"text":"combine.combine (cognitive 25): combine.combine has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/combine.js"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdec88090a964e5528af5fd0000a32a15129c65bd6fd436cea24be76492af0e7"}},{"ruleId":"D2","level":"warning","message":{"text":"CubeMapFace.CubeMapFace.copyFrom (cognitive 25): CubeMapFace.CubeMapFace.copyFrom has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (24 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/CubeMapFace.js"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6cbd24373c10a8c7aa071828b2f5721d00c172908889c8fa48f7d768eaa512c"}},{"ruleId":"D2","level":"warning","message":{"text":"CubeMap.CubeMap (cognitive 25): CubeMap.CubeMap has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 5, loops 2 (3 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/CubeMap.js"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04980772de3602868418c11e041fffa7e0f4acb3de6bdef931c478c6702b822"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveOutlineGenerator.initialize (cognitive 25): PrimitiveOutlineGenerator.initialize has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (7 pts), boolean chains 6 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/PrimitiveOutlineGenerator.js"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"20766a6af4fec798e2e2f525296ebe96050e38d807ad475680202d6fbd4d1d44"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageryLayerCollection.ImageryLayerCollection.pickImageryLayerFeatures (cognitive 25): ImageryLayerCollection.ImageryLayerCollection.pickImageryLayerFeatures has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (19 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 9). Of this number, 14 points are the body\u0027s own statements and 11 belong to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayerCollection.js"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"232e4653df5545104d338919667600319bde6eeea15d59a887fc65c4c1635f52"}},{"ruleId":"D2","level":"warning","message":{"text":"PathVisualizer.PathVisualizer._onCollectionChanged (cognitive 25): PathVisualizer.PathVisualizer._onCollectionChanged has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 3, boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdd2f3c1d76110d496b4a7d43614d8b71386c1c7bc8cbdee9e2add6ae9f29447"}},{"ruleId":"D2","level":"warning","message":{"text":"CubeMapPanorama.CubeMapPanorama.update (cognitive 25): CubeMapPanorama.CubeMapPanorama.update has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (18 pts), boolean chains 5, ternaries 1 (2 pts) (nesting depth added 4). Of this number, 24 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CubeMapPanorama.js"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f46bd5c19a7d004b02dabc7833f513b0690c21640bb75a2749cc582bfbd69b9"}},{"ruleId":"D2","level":"warning","message":{"text":"createVectorTileClampedPolylines.createVectorTileClampedPolylines (cognitive 25): createVectorTileClampedPolylines.createVectorTileClampedPolylines has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 4 (5 pts), ternaries 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTileClampedPolylines.js"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"566513cc8c50909af43d36aaa0831d8bcd33611e1215211a1671a9b52da12403"}},{"ruleId":"D2","level":"warning","message":{"text":"styleEditorKeyPress (cognitive 25): styleEditorKeyPress has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 2 (6 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspectorViewModel.js"},"region":{"startLine":1485}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b292ca0e214777ab1e094eb27dbb91bd96c57fa7e7c3ba57519d3a2efb29141"}},{"ruleId":"D2","level":"warning","message":{"text":"test (cognitive 25): test has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (11 pts), ternaries 11, boolean chains 2, other 1 (nesting depth added 1). Of this number, 23 points are the body\u0027s own statements and 2 belong to 2 function items inside it that branch. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"120c1b700e4f215105392c11e5f1d6293429f835a4c544a9c2e6dd3c90d37278"}},{"ruleId":"D2","level":"warning","message":{"text":"shaderEditorKeyPress (cognitive 25): shaderEditorKeyPress has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 2 (6 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/VoxelInspector/VoxelInspectorViewModel.js"},"region":{"startLine":911}}}],"partialFingerprints":{"codehealthFindingId/v1":"427f6ff8c171079861ff8ca1d3b317f8fe9c04026fc6f4c544cc7e76688dcfd2"}},{"ruleId":"D2","level":"warning","message":{"text":"MetadataTableProperty (cognitive 25): MetadataTableProperty has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13, other 10, boolean chains 2. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataTableProperty.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"034383b14ba4f1986ba82e7d2d69e361ddeac55f43f8e4b821d9fac17b874ddb"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryPipeline.GeometryPipeline.fitToUnsignedShortIndices (cognitive 24): GeometryPipeline.GeometryPipeline.fitToUnsignedShortIndices has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 2 (5 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1652de1d3044706d3930fe7097103e7b6664582495c1612597525662ac79784"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonGeometry.createGeometryFromPositionsExtruded (cognitive 24): PolygonGeometry.createGeometryFromPositionsExtruded has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 3 (7 pts), boolean chains 4 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a10136afd67299e68a2163f6797af27942a1b89a9a7eb562d2b1a8cab7c747"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonOutlineGeometry.createGeometryFromPositions (cognitive 24): PolygonOutlineGeometry.createGeometryFromPositions has cognitive complexity 24 (threshold 15). Drivers by points: loops 6 (14 pts), if/else 7 (10 pts) (nesting depth added 11). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonOutlineGeometry.js"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"1085c47b83258185f42869f0366e7d0760e2d41c335b9a5f2d9bf10a52e67f99"}},{"ruleId":"D2","level":"warning","message":{"text":"RectangleGeometry.calculateAttributes (cognitive 24): RectangleGeometry.calculateAttributes has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (17 pts), ternaries 3, boolean chains 2, loops 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac73446c2c97dc015925dd88f48829d56083a4729f9b69f01dafa36c29a3a3c"}},{"ruleId":"D2","level":"warning","message":{"text":"CartographicGeocoderService.CartographicGeocoderService.geocode (cognitive 24): CartographicGeocoderService.CartographicGeocoderService.geocode has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (15 pts), boolean chains 4, loops 1 (3 pts), ternaries 1 (2 pts) (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CartographicGeocoderService.js"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b82c5e8b34b251d7b585fd3f8bfe16881c5ed7a9c4b0d77bb5df31ec0c22ecf"}},{"ruleId":"D2","level":"warning","message":{"text":"GoogleEarthEnterpriseTerrainProvider.GoogleEarthEnterpriseTerrainProvider.requestTileGeometry (cognitive 24): GoogleEarthEnterpriseTerrainProvider.GoogleEarthEnterpriseTerrainProvider.requestTileGeometry has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (18 pts), ternaries 2 (4 pts), boolean chains 1, match/switch 1 (nesting depth added 6). Of this number, 20 points are the body\u0027s own statements and 4 belong to 4 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GoogleEarthEnterpriseTerrainProvider.js"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e38b612de9806e097d07cd7215e05c5f773f40e79a6276daa54b34454410187"}},{"ruleId":"D2","level":"warning","message":{"text":"PntsParser.PntsParser.parse (cognitive 24): PntsParser.PntsParser.parse has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (18 pts), boolean chains 6 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PntsParser.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8fafa5d59f41085525e96aa03669817569d313aa443157daafa3a3f61ea52a1"}},{"ruleId":"D2","level":"warning","message":{"text":"SampledProperty.mergeNewSamples (cognitive 24): SampledProperty.mergeNewSamples has cognitive complexity 24 (threshold 15). Drivers by points: loops 4 (11 pts), if/else 4 (10 pts), boolean chains 3 (nesting depth added 13). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/SampledProperty.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2c72941bbd4d94d5863225a24fd9a6800122e7a8717864f4375cbc0b96f79f0"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeTranslucencyState.getDerivedCommandTypes (cognitive 24): GlobeTranslucencyState.getDerivedCommandTypes has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (18 pts), ternaries 4 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeTranslucencyState.js"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"895ac782529a0b82f5bc0eb66126eab8ec949d67369bab6b3d3ddd8838bfd844"}},{"ruleId":"D2","level":"warning","message":{"text":"QuadtreePrimitive.selectTilesForRendering (cognitive 24): QuadtreePrimitive.selectTilesForRendering has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 2 (5 pts), ternaries 1 (nesting depth added 11). Of this number, 22 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"efbb8c4131beb8053baf93232f90013398a37b92b0fa7e66b3fccbb54c9c7b4b"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SField.I3SField._parseBody (cognitive 24): I3SField.I3SField._parseBody has cognitive complexity 24 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 3 (9 pts), ternaries 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SField.js"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a2aee589692268ab7a5135b196bcae70e233e884c05aefbd1e52b5dfbb8114"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeGoogleEarthEnterprisePacket.processMetadata (cognitive 24): decodeGoogleEarthEnterprisePacket.processMetadata has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (22 pts), loops 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeGoogleEarthEnterprisePacket.js"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"20f225ca80945b10293f27c2bf1c2a8909a5b779368c79b6c8eb66db14f7efa9"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeI3S.addOutlinesForEdge (cognitive 24): decodeI3S.addOutlinesForEdge has cognitive complexity 24 (threshold 15). Drivers by points: if/else 4 (11 pts), ternaries 2 (8 pts), loops 2 (5 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f7fa34e1db75f77eb09d7ed2c8258dd728f50bb4b4789d2ad443b82e18b557f"}},{"ruleId":"D2","level":"warning","message":{"text":"processNetworkLinkQueryString (cognitive 24): processNetworkLinkQueryString has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (21 pts), boolean chains 2, other 1 (nesting depth added 6). Of this number, 20 points are the body\u0027s own statements and 4 belong to 2 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2818}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3f46cb65ca6a661c9fedb5b74bfb77e8cbd1ca53aecff132d49d9f01287ad0"}},{"ruleId":"D2","level":"warning","message":{"text":"createCommands (cognitive 24): createCommands has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (20 pts), ternaries 3, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1846}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e027bb2a0ecc7f6f1d1bd72adcf7025b47b527a56b9c37f1e57bf56a3d05a00"}},{"ruleId":"D2","level":"warning","message":{"text":"addSkirtsToMesh (cognitive 24): addSkirtsToMesh has cognitive complexity 24 (threshold 15). Drivers by points: if/else 5 (10 pts), ternaries 3 (9 pts), loops 3 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e70d3a340ee011a255f638792c548d6258f619e47bf402c84738c5e20c97e09"}},{"ruleId":"D2","level":"warning","message":{"text":"equals (cognitive 24): equals has cognitive complexity 24 (threshold 15). Drivers by points: boolean chains 24. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"93df2d04beb9e0a2f12430b8ea2fa7fda344b31c95edb4180a06cf69d727a488"}},{"ruleId":"D2","level":"warning","message":{"text":"intersect (cognitive 24): intersect has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 7, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"0099be5a8486e2592db59812b19520495786427c57c60ac12982fe3ad5e1853c"}},{"ruleId":"D2","level":"warning","message":{"text":"executeTranslucentCommandsSortedMultipass (cognitive 24): executeTranslucentCommandsSortedMultipass has cognitive complexity 24 (threshold 15). Drivers by points: ternaries 8 (16 pts), boolean chains 4, if/else 2, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/OIT.js"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1be7e861e617b5aa056631d86cb3aeaf7ad2b7a5b8279f619c999f90855bf0c"}},{"ruleId":"D2","level":"warning","message":{"text":"EllipseGeometryLibrary.EllipseGeometryLibrary.computeEllipsePositions (cognitive 23): EllipseGeometryLibrary.EllipseGeometryLibrary.computeEllipsePositions has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 4 (8 pts), ternaries 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometryLibrary.js"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e4a2581f8511902c64478f68f91da558fb01ea6870424adeca9628855e88348"}},{"ruleId":"D2","level":"warning","message":{"text":"HermitePolynomialApproximation.calculateCoefficientTerm (cognitive 23): HermitePolynomialApproximation.calculateCoefficientTerm has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 4 (8 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/HermitePolynomialApproximation.js"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d49c51cc61113252bc379acf5e1c07e7ea135e3a4f15900879bac096ef537e"}},{"ruleId":"D2","level":"warning","message":{"text":"TimeIntervalCollection.parseDuration (cognitive 23): TimeIntervalCollection.parseDuration has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"13d4eafb9c2ff5382b46a6e1269532f46a736265a8e7812565e721a429d3ec42"}},{"ruleId":"D2","level":"warning","message":{"text":"DoubleEndedPriorityQueue.pushDown (cognitive 23): DoubleEndedPriorityQueue.pushDown has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/DoubleEndedPriorityQueue.js"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"d593babdff048aed9b6d7f4d8969aed0d4aab667301a4bf4db1417db48ce9af1"}},{"ruleId":"D2","level":"warning","message":{"text":"FrustumGeometry.FrustumGeometry.createGeometry (cognitive 23): FrustumGeometry.FrustumGeometry.createGeometry has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (12 pts), ternaries 5 (9 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/FrustumGeometry.js"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa76b5da9d3da69b3e921e6d9f62a1f6f40c924e23625e2e1bef1356f1afc02"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageBasedLighting.ImageBasedLighting.update (cognitive 23): ImageBasedLighting.ImageBasedLighting.update has cognitive complexity 23 (threshold 15). Drivers by points: boolean chains 16, if/else 6 (7 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageBasedLighting.js"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ba632e14fec44c6f303405029fdbad7353f41376826885adbe8cb8b7f0aed3"}},{"ruleId":"D2","level":"warning","message":{"text":"TextureAtlas.TextureAtlas._resize (cognitive 23): TextureAtlas.TextureAtlas._resize has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 5 (6 pts), boolean chains 1 (nesting depth added 10). Of this number, 22 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/TextureAtlas.js"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a85a44d134182d03181955259b9fd5e66e6f144e66f69168b44e11baaf94ef5"}},{"ruleId":"D2","level":"warning","message":{"text":"CameraFlightPath.CameraFlightPath.createTween (cognitive 23): CameraFlightPath.CameraFlightPath.createTween has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 7, ternaries 1 (2 pts) (nesting depth added 3). Of this number, 21 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CameraFlightPath.js"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4276cfb556ffb74b6394c682618babe9ef454a7f2e16a6b07a77e4834dd721"}},{"ruleId":"D2","level":"warning","message":{"text":"CloudCollection.updateClouds (cognitive 23): CloudCollection.updateClouds has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 4 (10 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CloudCollection.js"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ebae198c72d476f690618d494892f4d3c1bc7f4bebe01f7a870430ba7badf2"}},{"ruleId":"D2","level":"warning","message":{"text":"PostProcessStageTextureCache.getCompositeDependencies (cognitive 23): PostProcessStageTextureCache.getCompositeDependencies has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 4 (8 pts), boolean chains 4 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStageTextureCache.js"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"61313df95799e60f14b65ec5d0dbd18f56c7faf18b870abe688743d0917fbec5"}},{"ruleId":"D2","level":"warning","message":{"text":"processVoxelProperties.processVoxelProperties (cognitive 23): processVoxelProperties.processVoxelProperties has cognitive complexity 23 (threshold 15). Drivers by points: loops 12 (15 pts), if/else 3 (6 pts), boolean chains 2 (nesting depth added 6). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/processVoxelProperties.js"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"0712210bc5472b0093f3b83f2ed10dff1128fa91db9b188c20355fe21e70dca5"}},{"ruleId":"D2","level":"warning","message":{"text":"main.document.addEventListener(\u0022keydown\u0022) (cognitive 23): main.document.addEventListener(\u0022keydown\u0022) has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/localtofixedframe/main.js"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c9e0d00adf3c7c5322012e2180d50202e84e728c0f68762b960ae51699c58cc"}},{"ruleId":"D2","level":"warning","message":{"text":"main.applySelection (cognitive 23): main.applySelection has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (23 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/time-dependent-path-graphics/main.js"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"66b4878103baf64ac3ef66b95fef83eed71f5ff633ba42476d0aed0e173f3652"}},{"ruleId":"D2","level":"warning","message":{"text":"loadMaterial (cognitive 23): loadMaterial has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 5, other 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":1891}}}],"partialFingerprints":{"codehealthFindingId/v1":"867a870e8d436f20f1781a034106e61c308a2beed8046fd2ed9fe28f6d991d0b"}},{"ruleId":"D2","level":"warning","message":{"text":"getEvaluateTernaryComponentwise (cognitive 23): getEvaluateTernaryComponentwise has cognitive complexity 23 (threshold 15). Drivers by points: boolean chains 13, if/else 9 (10 pts) (nesting depth added 1). Most of this is not in the body itself: 0 of the 23 points are its own statements and the rest belongs to one function literal inside it that branches (line 415). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d5c3cf1b3f0276e397217b322e5a6eca5b1e8793b422f8c6d7fc4d282a7958"}},{"ruleId":"D2","level":"warning","message":{"text":"updateZoomTarget (cognitive 23): updateZoomTarget has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16 (19 pts), boolean chains 2, loops 1, other 1 (nesting depth added 3). Of this number, 20 points are the body\u0027s own statements and 3 belong to 8 function items inside it that branch. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":1443}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd5687a9eb8c2cdaa04c12689c61fcfe651e946a92baf49b3377bd97577d42b"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 23): update has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 6, other 2, loops 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelCylinderShape.js"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1cedae15f8ca5a85daa6375b5f5b0bde0d710e0058ee5c2f17071926e546836"}},{"ruleId":"D2","level":"warning","message":{"text":"merge (cognitive 23): merge has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 3, other 2, loops 1, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/Entity.js"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa858252bbefb1db7bc50e9640335de7527e241315c9d604f997dcbe32d4882"}},{"ruleId":"D2","level":"warning","message":{"text":"CubicRealPolynomial.computeRealRoots (cognitive 22): CubicRealPolynomial.computeRealRoots has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (14 pts), ternaries 5 (8 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CubicRealPolynomial.js"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a795091905bc5461696466d9d8642286541dd01d930af6823848ca3ac777d0d"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryPipeline.GeometryPipeline.computeNormal (cognitive 22): GeometryPipeline.GeometryPipeline.computeNormal has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 6 (8 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ea65e0d8633b80a600b9637795b04701dfd8705e44a7dd1141b62dcc912ffb4"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTileBatchTable.getBinaryProperties (cognitive 22): Cesium3DTileBatchTable.getBinaryProperties has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (21 pts), loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileBatchTable.js"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9136f33ad20839f0db7d33c46384e08ccbd30ca8f018cad0cf8a784655268f9"}},{"ruleId":"D2","level":"warning","message":{"text":"Label.Label.getScreenSpaceBoundingBox (cognitive 22): Label.Label.getScreenSpaceBoundingBox has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"550b37a396642c2f480f7a4a9f541a4e64d759952df099d304ef01bdce81fed3"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTileset.updateTiles (cognitive 22): Cesium3DTileset.updateTiles has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (12 pts), loops 4 (6 pts), boolean chains 4 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":3199}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b0d60b2884ccb0a05e1a2f1c9e2c229d1c92324cae7159284f5964cf69c8503"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTilesetVisualizer.Cesium3DTilesetVisualizer.update (cognitive 22): Cesium3DTilesetVisualizer.Cesium3DTilesetVisualizer.update has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 2, ternaries 1 (2 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/Cesium3DTilesetVisualizer.js"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5665696ea28cbac93cbef7ce98f04400ceeac92951cf5b88b9cc1816dddbab5"}},{"ruleId":"D2","level":"warning","message":{"text":"CzmlDataSource.processProperties (cognitive 22): CzmlDataSource.processProperties has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (7 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":1666}}}],"partialFingerprints":{"codehealthFindingId/v1":"0654ad4f2bb112643a40565ed200253810c1679be1034fd02ab465466a77a776"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineGeometryUpdater.DynamicGeometryUpdater.update (cognitive 22): PolylineGeometryUpdater.DynamicGeometryUpdater.update has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 5 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PolylineGeometryUpdater.js"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"365d692c2f6d9917f34f039c8920ed14af91e123a960f307842fc59fa566ff64"}},{"ruleId":"D2","level":"warning","message":{"text":"CesiumInspectorViewModel.frustumStatisticsToString (cognitive 22): CesiumInspectorViewModel.frustumStatisticsToString has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 2 (7 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/CesiumInspector/CesiumInspectorViewModel.js"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b368f1d7b6bc271e297ff691c581e264a1a3049229ff91a3935cafc9a2d1df4"}},{"ruleId":"D2","level":"warning","message":{"text":"generateNormals (cognitive 22): generateNormals has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (11 pts), ternaries 3 (6 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4d6ae15b5f1d57aca07e5a426d59702ca9e5661c5e8ac2b0ec204ae9d28184"}},{"ruleId":"D2","level":"warning","message":{"text":"copyFrom (cognitive 22): copyFrom has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (18 pts), boolean chains 4 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"19d32168b3c6c21295e39f64c07955183e5f5cdd0c6c041fa66bb3049f6d2d19"}},{"ruleId":"D2","level":"warning","message":{"text":"updateRadianceMap (cognitive 22): updateRadianceMap has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 10). Of this number, 15 points are the body\u0027s own statements and 7 belong to 7 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/DynamicEnvironmentMapManager.js"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e761ad16968bdd2f8ddcc7ffc70308ccd59a7e8008dc794319615d12627f2b4"}},{"ruleId":"D2","level":"warning","message":{"text":"ParticleSystem (cognitive 22): ParticleSystem has cognitive complexity 22 (threshold 15). Drivers by points: other 21, if/else 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ParticleSystem.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca79e32d07b1e4c138037384239becfe35c37194587aa4cbfb4a0ddaad563331"}},{"ruleId":"D2","level":"warning","message":{"text":"VoxelInspectorViewModel (cognitive 22): VoxelInspectorViewModel has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16 (17 pts), boolean chains 3, ternaries 1 (2 pts) (nesting depth added 2). Most of this is not in the body itself: 0 of the 22 points are its own statements and the rest belongs to 78 function items inside it that branch (addProperty::set, addProperty, setPrimitiveFunction, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/VoxelInspector/VoxelInspectorViewModel.js"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda0c2ac5f69b4c69d4d96a6c394048145f06558b82e6af0e2c791bf1921bb73"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 22): update has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 5 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/OIT.js"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"e020c3b4ac40ced73afb8cd57b233529b19e98d589129ad77a220ae1025b6fcf"}},{"ruleId":"D2","level":"warning","message":{"text":"QuadraticRealPolynomial.QuadraticRealPolynomial.computeRealRoots (cognitive 21): QuadraticRealPolynomial.QuadraticRealPolynomial.computeRealRoots has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14 (19 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/QuadraticRealPolynomial.js"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e36b3ada79cfd09fe802c93cb9b903490f2079ff64acf167d757913c8dee82a"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryPipeline.updateAdjacencyAfterSplit (cognitive 21): GeometryPipeline.updateAdjacencyAfterSplit has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 6, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2879}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51d8d87db6f56ee5f00deaa64e72f8b5c640232adade8437602d35f1c94593f"}},{"ruleId":"D2","level":"warning","message":{"text":"PixelFormat.PixelFormat.toInternalFormat (cognitive 21): PixelFormat.PixelFormat.toInternalFormat has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (11 pts), match/switch 5 (10 pts) (nesting depth added 6). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PixelFormat.js"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9fc70cb94be96fa63c56e615e8293e6245771b02e73a6ab47f898dc58bfc13e"}},{"ruleId":"D2","level":"warning","message":{"text":"GltfDracoLoader.process (cognitive 21): GltfDracoLoader.process has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (20 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfDracoLoader.js"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc0b07a9f40b3e2a0ec48fdd5d6e194b53e1e0e884ae05acac6f1831858abe5"}},{"ruleId":"D2","level":"warning","message":{"text":"CesiumTerrainProvider.requestTileGeometry (cognitive 21): CesiumTerrainProvider.requestTileGeometry has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (14 pts), boolean chains 5, ternaries 1 (2 pts) (nesting depth added 2). Of this number, 19 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b1773b45988c27fe603978c282c0116e7db741489f84fccc38b44949581283f"}},{"ruleId":"D2","level":"warning","message":{"text":"ShaderSource.combineShader (cognitive 21): ShaderSource.combineShader has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (14 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/ShaderSource.js"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"8770dce925bd441add3edccccc7761b7cf20e150744de41ae8226793bf0f2d94"}},{"ruleId":"D2","level":"warning","message":{"text":"Material.createUniform (cognitive 21): Material.createUniform has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":1163}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6fe7aaca87fe95938813f4c9c926c5b06d459e59d0f371ceebfb7022f0366d"}},{"ruleId":"D2","level":"warning","message":{"text":"Expression.createRuntimeAst (cognitive 21): Expression.createRuntimeAst has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16 (19 pts), loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"897a8fbfa32352a168ce6db7b78c7a10ba100efb254e29e29d20046ed422040e"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneTransforms.SceneTransforms.worldWithEyeOffsetToWindowCoordinates (cognitive 21): SceneTransforms.SceneTransforms.worldWithEyeOffsetToWindowCoordinates has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/SceneTransforms.js"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d5928d47f98e872d27644c036fc7fda8bc20c00a22f8b4afd8aaf0949962ae4"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTilesetSkipTraversal.executeTraversal (cognitive 21): Cesium3DTilesetSkipTraversal.executeTraversal has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 3, loops 1, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTilesetSkipTraversal.js"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ba64a1254daa7e2c5a48807a4f28953cbe9891ddb0c6fffd2d8ce842a7a606"}},{"ruleId":"D2","level":"warning","message":{"text":"VoxelTraversal.generateOctree (cognitive 21): VoxelTraversal.generateOctree has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (11 pts), ternaries 2 (6 pts), loops 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelTraversal.js"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"a963bf4390d0539020f5731d6a381e403b87e7a1a9393b17ef84e0fd9465e9be"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SSymbology.buildClassBreaksHash (cognitive 21): I3SSymbology.buildClassBreaksHash has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (17 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SSymbology.js"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"1083ec301f2c0d55df1c06ab73f05272e5c9fc48e3217afb5712eca2f2b6197f"}},{"ruleId":"D2","level":"warning","message":{"text":"ConsoleWrapper.setupWindowErrorHandler (cognitive 21): ConsoleWrapper.setupWindowErrorHandler has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (15 pts), error handling 2 (5 pts), boolean chains 1 (nesting depth added 9). Most of this is not in the body itself: 0 of the 21 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 220, 263). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/util/ConsoleWrapper.ts"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"d005d0186babfe89431bdd8cb60e33681df2f3f5dfe176f4a0483608db7e16e9"}},{"ruleId":"D2","level":"warning","message":{"text":"DiffMatcher.findClosestMatch (cognitive 21): DiffMatcher.findClosestMatch has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 4, loops 3 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cbb3d6cf101b8903a25db2ae459b2db0056a4c4b3d2418feec8cd91d0790bd1"}},{"ruleId":"D2","level":"warning","message":{"text":"processDocument (cognitive 21): processDocument has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (16 pts), other 5 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":2628}}}],"partialFingerprints":{"codehealthFindingId/v1":"58af96c224fb4757db2a7f40563708baa17274cfc850013dbbfe984dd199df4a"}},{"ruleId":"D2","level":"warning","message":{"text":"zoomToOrFly (cognitive 21): zoomToOrFly has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 4, other 1 (nesting depth added 3). Most of this is not in the body itself: 1 of the 21 points is its own statement and the rest belongs to 8 function items inside it that branch ((anonymous), (anonymous)::(anonymous), (anonymous)::(anonymous), \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a34c960ee86bc449fba44b5780c26968113d5b4c4577a711eb791daf44b124"}},{"ruleId":"D2","level":"warning","message":{"text":"GroundPrimitive (cognitive 21): GroundPrimitive has cognitive complexity 21 (threshold 15). Drivers by points: other 11, if/else 2 (4 pts), boolean chains 2, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPrimitive.js"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"08e55a2a41ef324b3710abda5d0753729cc368eee5c9b9dc141bf76fd97a881a"}},{"ruleId":"D2","level":"warning","message":{"text":"load (cognitive 21): load has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (9 pts), error handling 2 (3 pts), loops 1 (3 pts), ternaries 1 (3 pts), boolean chains 2, other 1 (nesting depth added 9). Most of this is not in the body itself: 9 of the 21 points are its own statements and the rest belongs to 3 function literals inside it that branch (lines 690, 688, 727). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GpxDataSource.js"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ab061574ac0a5dbbf592834b58847b3fba1a86aeac077c5d22a23c45071977"}},{"ruleId":"D2","level":"warning","message":{"text":"equals (cognitive 21): equals has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/SampledProperty.js"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"e535934c40bf5dd5499fcdb56fb56f5aadf8cd56ed107dcd97b13ea7c13ad2a9"}},{"ruleId":"D2","level":"warning","message":{"text":"FixedFrameTransforms.FixedFrameTransforms.localFrameToFixedFrameGenerator (cognitive 20): FixedFrameTransforms.FixedFrameTransforms.localFrameToFixedFrameGenerator has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 6 (nesting depth added 3). Most of this is not in the body itself: 3 of the 20 points are its own statements and the rest belongs to one function literal inside it that branches (line 138). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/FixedFrameTransforms.js"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0e41264451c657f734664c229a29ebbe09b178c05631cf325dd30918b7a5df9"}},{"ruleId":"D2","level":"warning","message":{"text":"Expression.Node._evaluateTimes (cognitive 20): Expression.Node._evaluateTimes has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 10, if/else 10. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1497}}}],"partialFingerprints":{"codehealthFindingId/v1":"5770cc0cef548fc4fa2d262e6f488b75a4a258ad8d5537e38f5057e4b4938aa2"}},{"ruleId":"D2","level":"warning","message":{"text":"Expression.Node.getVariables (cognitive 20): Expression.Node.getVariables has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 3 (7 pts), boolean chains 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":2169}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a7156fce81023c38bfaf8b8fbe45109f8328aa6289177344337e35f8525e37a"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveOutlineGenerator.matchAndStoreCoordinates (cognitive 20): PrimitiveOutlineGenerator.matchAndStoreCoordinates has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (13 pts), ternaries 6, boolean chains 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/PrimitiveOutlineGenerator.js"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7a9f9dbce73d4fe244a1a4efbc17ec9320ee8eba4febb761e5b01bbd35e18d9"}},{"ruleId":"D2","level":"warning","message":{"text":"TileImagery.TileImagery.processStateMachine (cognitive 20): TileImagery.TileImagery.processStateMachine has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 6, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TileImagery.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae4f7d160f8bc1c54ad5c61796d042cfe851493a0acca1e68f8a661503c1f85c"}},{"ruleId":"D2","level":"warning","message":{"text":"createVectorTileBuffersFromModelComponents.appendBufferPolygons (cognitive 20): createVectorTileBuffersFromModelComponents.appendBufferPolygons has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (6 pts), ternaries 2 (5 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b45b82ca05a09f009bf33819b295a3d4f014d1f61916c7e36933d6a4134bf5d"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTile.processArrayBuffer (cognitive 20): Cesium3DTile.processArrayBuffer has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 2, error handling 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":1251}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba2db59f8ec6f18aec2c522a77ea41d74442f8e9421f80ba8990813cdc5d0708"}},{"ruleId":"D2","level":"warning","message":{"text":"KmlDataSource.loadKmz (cognitive 20): KmlDataSource.loadKmz has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (18 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3289}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a64692b77c7a2b3be08c3021c9410cf566ac8b7f8f4ed7577b141cced0119b"}},{"ruleId":"D2","level":"warning","message":{"text":"PromptInput.PromptInput (cognitive 20): PromptInput.PromptInput has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (10 pts), boolean chains 9, ternaries 1 (nesting depth added 1). Most of this is not in the body itself: 6 of the 20 points are its own statements and the rest belongs to 5 function literals inside it that branch (lines 122, 77, 50, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/PromptInput.tsx"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec5a2955254bbd95e2a6df2e2189e8f23b5db5427ad995852f10916487f9b8b"}},{"ruleId":"D2","level":"warning","message":{"text":"updateDerivedCommands (cognitive 20): updateDerivedCommands has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 5, ternaries 1 (3 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":1804}}}],"partialFingerprints":{"codehealthFindingId/v1":"c688f9dacff5a5254c3fa049413de2f8ebda39b7a4f42f29b3c8558d0e4075b5"}},{"ruleId":"D2","level":"warning","message":{"text":"updateForPass (cognitive 20): updateForPass has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 11, if/else 5 (6 pts), other 3 (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":3612}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f2eb29d2280f1bffc6c54ad60d3a70b5259c9105dd952bf08e53e5b1792d958"}},{"ruleId":"D2","level":"warning","message":{"text":"processBillboardIcon (cognitive 20): processBillboardIcon has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 4, other 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b5756919ab02f1b1305309e40328b60e277aae6e1b616846c64c406453e0a0d"}},{"ruleId":"D2","level":"warning","message":{"text":"loadWithXhr::onload (cognitive 20): loadWithXhr::onload has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 10, if/else 8, error handling 1 (2 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":2159}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad460ae6abb497a3b71c15b362fee541a38523a7bbf9d21b8473a78d63c31044"}},{"ruleId":"D2","level":"warning","message":{"text":"Context (cognitive 20): Context has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (8 pts), ternaries 6, other 4, boolean chains 1, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Context.js"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"92146c4cdad0c47e4ae50a5f7c8429d29919fd3184f9257945c7e6068eb3e7bc"}},{"ruleId":"D2","level":"warning","message":{"text":"getRayIntersection (cognitive 20): getRayIntersection has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 4, ternaries 1 (4 pts), loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Picking.js"},"region":{"startLine":1115}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa70cc7780a5b9197f9634640a7acc50636231b6b7bbe37f41de0becf916a0f"}},{"ruleId":"D2","level":"warning","message":{"text":"fromRectangle (cognitive 20): fromRectangle has cognitive complexity 20 (threshold 15). Drivers by points: ternaries 6 (7 pts), boolean chains 5, if/else 5, other 3 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrientedBoundingBox.js"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7dc68c5ef543169b2aef1cf4f6d7c47120f172a5f6187125af9702c4216192"}},{"ruleId":"D2","level":"warning","message":{"text":"fromJulianDateArray (cognitive 20): fromJulianDateArray has cognitive complexity 20 (threshold 15). Drivers by points: ternaries 5 (10 pts), if/else 5, other 4, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c422830bfbe8011a88fc4393199c1650db0236a4d048d2b0b2b69baa00f2f4"}},{"ruleId":"D2","level":"warning","message":{"text":"getHeight (cognitive 20): getHeight has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 5, loops 2, other 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Globe.js"},"region":{"startLine":853}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7f63468c7892456dc7ae162f60a80172244494382eed95bd8d758836f8eba5"}},{"ruleId":"D2","level":"warning","message":{"text":"preload (cognitive 20): preload has cognitive complexity 20 (threshold 15). Drivers by points: other 10, if/else 4 (5 pts), loops 1 (3 pts), boolean chains 1, error handling 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"cab3e94efa22f1233b73eec3ba4871d1a75668ae2dfd663f8b675e76757b52e8"}},{"ruleId":"D2","level":"warning","message":{"text":"parseMetadataSuccess (cognitive 20): parseMetadataSuccess has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 1, other 1, ternaries 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/ArcGISTiledElevationTerrainProvider.js"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d13f8e2bed30bb3abf81b5114f76d3243a5c670beba9d2bbbd4958d48e6c017"}},{"ruleId":"D2","level":"warning","message":{"text":"EarthOrientationParameters.EarthOrientationParameters.compute (cognitive 19): EarthOrientationParameters.EarthOrientationParameters.compute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 4 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/EarthOrientationParameters.js"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0781e6c4fb1ae7878c8140067f45acaa9c67af0f256711f75226c7b322c2e5"}},{"ruleId":"D2","level":"warning","message":{"text":"TexturePacker.TexturePacker._findNode (cognitive 19): TexturePacker.TexturePacker._findNode has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/TexturePacker.js"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc7801115e0e676a26211aeca600c159ef874b22630da17cdf81b5371713beea"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitivePipeline.PrimitivePipeline.unpackCreateGeometryResults (cognitive 19): PrimitivePipeline.PrimitivePipeline.unpackCreateGeometryResults has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4 (9 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5b4ecaccffa6b3c44a501484628f0071bb4f833d33bd82a53325b3745065ed"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyBag.PropertyBag.merge (cognitive 19): PropertyBag.PropertyBag.merge has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 3, loops 1, ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PropertyBag.js"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a59c21e0512b1dcb496b62ea54b1dcb9342d656afbfa2f2e6b8c02d23b24b1"}},{"ruleId":"D2","level":"warning","message":{"text":"EdgeVisibilityPipelineStage.collectVertexColors (cognitive 19): EdgeVisibilityPipelineStage.collectVertexColors has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (14 pts), boolean chains 4, loops 1 (nesting depth added 1). Of this number, 16 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"caba46bc9c4a886f8f6aebfabf4b753aaf8dae6e65c9cb2477f26a332858583f"}},{"ruleId":"D2","level":"warning","message":{"text":"ArcGisMapServerImageryProvider.ArcGisMapServerImageryProvider.pickFeatures (cognitive 19): ArcGisMapServerImageryProvider.ArcGisMapServerImageryProvider.pickFeatures has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 4, ternaries 1 (3 pts), loops 1 (nesting depth added 5). Most of this is not in the body itself: 4 of the 19 points are its own statements and the rest belongs to one function literal inside it that branches (line 823). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ArcGisMapServerImageryProvider.js"},"region":{"startLine":773}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e6385572369c539d24c69f1ed2c9df6801aebe10c1b3f531fde32dd2552787b"}},{"ruleId":"D2","level":"warning","message":{"text":"TileBoundingS2Cell.TileBoundingS2Cell.distanceToCamera (cognitive 19): TileBoundingS2Cell.TileBoundingS2Cell.distanceToCamera has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (14 pts), loops 2 (3 pts), boolean chains 1, ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TileBoundingS2Cell.js"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d21a65091b857f88886eb5e6ca9bd8dae846442f183a79d3f789f7debd213c0"}},{"ruleId":"D2","level":"warning","message":{"text":"CompositeEntityCollection.CompositeEntityCollection._onDefinitionChanged (cognitive 19): CompositeEntityCollection.CompositeEntityCollection._onDefinitionChanged has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 2, loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CompositeEntityCollection.js"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"d40028b3598d91c485565efc5e5fb69beaba53cb7af62be445054819eac429e4"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticOutlineGeometryBatch.StaticOutlineGeometryBatch.update (cognitive 19): StaticOutlineGeometryBatch.StaticOutlineGeometryBatch.update has cognitive complexity 19 (threshold 15). Drivers by points: loops 5 (13 pts), if/else 2 (6 pts) (nesting depth added 12). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticOutlineGeometryBatch.js"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6344e309c23a0c351bfb31af53c25c93df90d30ee8fe5cfd2f274d9d3e1351f"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineGeometryUpdater.PolylineGeometryUpdater.createFillGeometryInstance (cognitive 19): PolylineGeometryUpdater.PolylineGeometryUpdater.createFillGeometryInstance has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 6 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PolylineGeometryUpdater.js"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"e96039e77483e7e580a80f206730df295cd9f491c9739d1d51cf786f3dbf9d59"}},{"ruleId":"D2","level":"warning","message":{"text":"DebugCameraPrimitive.DebugCameraPrimitive.update (cognitive 19): DebugCameraPrimitive.DebugCameraPrimitive.update has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (11 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/DebugCameraPrimitive.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bc93cd70e5c4d15ff0cb969cda7ab2aa5e5afd9d83813ea1af398b1baa2074"}},{"ruleId":"D2","level":"warning","message":{"text":"PostProcessStage.createSelectedTexture (cognitive 19): PostProcessStage.createSelectedTexture has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 3 (5 pts), boolean chains 4 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStage.js"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c41dd23a01e20d2a1beb0ac47c4060f85456899623312efb58679bb9eeda23a"}},{"ruleId":"D2","level":"warning","message":{"text":"PostProcessStageCollection.PostProcessStageCollection.execute (cognitive 19): PostProcessStageCollection.PostProcessStageCollection.execute has cognitive complexity 19 (threshold 15). Drivers by points: boolean chains 10, if/else 7, loops 1 (2 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStageCollection.js"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2ea59fedc5cbcbd148cd1b68541c13c0d633f7b4cd3994de97d848a193a9e0d"}},{"ruleId":"D2","level":"warning","message":{"text":"SpatialNode.SpatialNode.computeSurroundingRenderableKeyframeNodes (cognitive 19): SpatialNode.SpatialNode.computeSurroundingRenderableKeyframeNodes has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (12 pts), boolean chains 3, ternaries 1 (3 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/SpatialNode.js"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5722638a6f4620c5b331e3a4ab98b243a0fd363cfa1d72aa763c426a6a5ffa"}},{"ruleId":"D2","level":"warning","message":{"text":"VoxelPrimitive.VoxelPrimitive.update (cognitive 19): VoxelPrimitive.VoxelPrimitive.update has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (14 pts), ternaries 2 (3 pts), boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelPrimitive.js"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea9a1346d0318e660b09ceb3eb4247183d277eb64b5d84eb1058d034afdc151"}},{"ruleId":"D2","level":"warning","message":{"text":"Scene.insertShadowCastCommands (cognitive 19): Scene.insertShadowCastCommands has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (7 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3261}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc5663b74321d2ba9e3dfd9b5283ab103132c76f512796fb45565908d134ea1"}},{"ruleId":"D2","level":"warning","message":{"text":"GoogleEarthEnterpriseImageryProvider.decodeEarthImageryPacket (cognitive 19): GoogleEarthEnterpriseImageryProvider.decodeEarthImageryPacket has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 2 (5 pts), match/switch 2 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GoogleEarthEnterpriseImageryProvider.js"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"5daca291036a9293c21dfd6b04094660647d163d9721aa39e4a8c17fa9eecdcf"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeMVT.decodeFeature (cognitive 19): decodeMVT.decodeFeature has cognitive complexity 19 (threshold 15). Drivers by points: loops 4 (8 pts), if/else 5 (7 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/decodeMVT.js"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fde20ac513d060f43631b127ff352a22a0f13e31f63d9b36fd283717a384693"}},{"ruleId":"D2","level":"warning","message":{"text":"TimeDynamicPointCloud.unloadFrames (cognitive 19): TimeDynamicPointCloud.unloadFrames has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (17 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TimeDynamicPointCloud.js"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f389dbc82e2c508604cbccec75ffc9b9382e2313b92eda56c3082d3ba0e9535"}},{"ruleId":"D2","level":"warning","message":{"text":"upsampleQuantizedTerrainMesh.addClippedPolygon (cognitive 19): upsampleQuantizedTerrainMesh.addClippedPolygon has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/upsampleQuantizedTerrainMesh.js"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4bef977cf38a4e88697542078dda231b98366e45fcf63dd617448e928b48d3"}},{"ruleId":"D2","level":"warning","message":{"text":"Bucket.Bucket (cognitive 19): Bucket.Bucket has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 3 (nesting depth added 3). Most of this is not in the body itself: 0 of the 19 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 61, 118, 44, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Bucket.tsx"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b2c2e7740b67b9abd9c5669aa6c8554091dce5f3ea696ce886e361583377342"}},{"ruleId":"D2","level":"warning","message":{"text":"toolRegistry.createApplyDiffHandler (cognitive 19): toolRegistry.createApplyDiffHandler has cognitive complexity 19 (threshold 15). Drivers by points: ternaries 4 (8 pts), if/else 6 (7 pts), boolean chains 3, error handling 1 (nesting depth added 5). Most of this is not in the body itself: 0 of the 19 points are its own statements and the rest belongs to one function literal inside it that branches (line 74). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/tools/toolRegistry.ts"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b12faac8fc5d38f8b33ab7852f39fa4aab535ffa7aa1237c7e2fec53979364"}},{"ruleId":"D2","level":"warning","message":{"text":"Timeline.createTouchMoveCallback (cognitive 19): Timeline.createTouchMoveCallback has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 2 (nesting depth added 7). Most of this is not in the body itself: 0 of the 19 points are its own statements and the rest belongs to one function literal inside it that branches (line 916). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/Timeline.js"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee2b689257190308bc17e7b5e3e20cc9fd8aa8fd877ab0169190eaf0bb5f797"}},{"ruleId":"D2","level":"warning","message":{"text":"getIconHref (cognitive 19): getIconHref has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (10 pts), other 4, boolean chains 3, ternaries 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"78474e5423cc7ae8d4aaf114ec9214b55085a1232d9f869dcc7e96f1d8f31642"}},{"ruleId":"D2","level":"warning","message":{"text":"flyTo (cognitive 19): flyTo has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (15 pts), other 2, boolean chains 1, ternaries 1 (nesting depth added 3). Of this number, 17 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":3427}}}],"partialFingerprints":{"codehealthFindingId/v1":"20106779f8092722015cdb0bfaa5432f5a8a34a3cc21e64bebec58305ccf453e"}},{"ruleId":"D2","level":"warning","message":{"text":"unwrapInterval (cognitive 19): unwrapInterval has cognitive complexity 19 (threshold 15). Drivers by points: other 18, match/switch 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":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"42baa4626e3a6f1295ac737c7f6c01541a4ab76e38576a4b34ce3d1f68141cc4"}},{"ruleId":"D2","level":"warning","message":{"text":"fetchImage (cognitive 19): fetchImage has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (8 pts), boolean chains 5, other 5, error handling 1 (nesting depth added 1). Of this number, 12 points are the body\u0027s own statements and 7 belong to 4 function literals inside it that branch. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"810e5b4fa789f6dec7060e2139b4e1b676318fd89838a347118cc791c1f0c614"}},{"ruleId":"D2","level":"warning","message":{"text":"updateAndQueueCommands (cognitive 19): updateAndQueueCommands has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (10 pts), ternaries 2 (4 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"b26bd820c0a83402089560345d84bf5c4498cf81948d0c2c000ac700bfbae0c0"}},{"ruleId":"D2","level":"warning","message":{"text":"equals (cognitive 19): equals has cognitive complexity 19 (threshold 15). Drivers by points: boolean chains 19. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Billboard.js"},"region":{"startLine":1555}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca5fc45f9f7506471bafc698cb500428ae6cefade60fcdfb5efc35f0d19fde4"}},{"ruleId":"D2","level":"warning","message":{"text":"continueDraw (cognitive 19): continueDraw has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 1, other 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Context.js"},"region":{"startLine":1323}}}],"partialFingerprints":{"codehealthFindingId/v1":"980879de35c53ab257fc04e39493226831fbdd78e4e7632d2ce7dfa21df9c05f"}},{"ruleId":"D2","level":"warning","message":{"text":"generateOctree::buildOctree (cognitive 19): generateOctree::buildOctree has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (9 pts), ternaries 2 (6 pts), loops 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelTraversal.js"},"region":{"startLine":996}}}],"partialFingerprints":{"codehealthFindingId/v1":"749cc388a4108a0ed704797fa06b548493de19dc038a78c86c7be15af4ace432"}},{"ruleId":"D2","level":"warning","message":{"text":"Occluder.Occluder.computeVisibility (cognitive 18): Occluder.Occluder.computeVisibility has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), ternaries 2 (7 pts) (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Occluder.js"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a750c545bd9dd49c12bd45343d058b6cb962b3115512c6362721ee56c38d00"}},{"ruleId":"D2","level":"warning","message":{"text":"BoxGeometry.BoxGeometry.createGeometry (cognitive 18): BoxGeometry.BoxGeometry.createGeometry has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoxGeometry.js"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c71c078b903b0e031516899633fb4c4b881e7576837d108f5ea3981177dd11"}},{"ruleId":"D2","level":"warning","message":{"text":"WallGeometryLibrary.removeDuplicates (cognitive 18): WallGeometryLibrary.removeDuplicates has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 3, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/WallGeometryLibrary.js"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06d0619078e59737a33efc70560c51ac29e311c81774efb06dfd677ecb39308"}},{"ruleId":"D2","level":"warning","message":{"text":"Iau2006XysData.Iau2006XysData.computeXysRadians (cognitive 18): Iau2006XysData.Iau2006XysData.computeXysRadians has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 3 (4 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Iau2006XysData.js"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"38178126a762f594334149cef8d42b6a8b44f2647067a70c55cd1eb58e9a7c58"}},{"ruleId":"D2","level":"warning","message":{"text":"GltfVertexBufferLoader.process (cognitive 18): GltfVertexBufferLoader.process has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (12 pts), error handling 2 (4 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfVertexBufferLoader.js"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d7a7d1913240577f03d4d04af2e2fe6f6fd2a775786f86014850308ac70fef"}},{"ruleId":"D2","level":"warning","message":{"text":"GoogleEarthEnterpriseTerrainProvider.GoogleEarthEnterpriseTerrainProvider.getTileDataAvailable (cognitive 18): GoogleEarthEnterpriseTerrainProvider.GoogleEarthEnterpriseTerrainProvider.getTileDataAvailable has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GoogleEarthEnterpriseTerrainProvider.js"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"65895b2d478c3c644ddcac06477c4ecfddf719457325c897dfb971f554b89e60"}},{"ruleId":"D2","level":"warning","message":{"text":"VRTheWorldTerrainProvider.getChildMask (cognitive 18): VRTheWorldTerrainProvider.getChildMask has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VRTheWorldTerrainProvider.js"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"b77627bb0d6f6185a12034370aa0ef204452ff4609ed44af2494e305e775876e"}},{"ruleId":"D2","level":"warning","message":{"text":"VertexArray.setVertexAttribDivisor (cognitive 18): VertexArray.setVertexAttribDivisor has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a61a67bc437c20d87d5176030c09502a48a8ce5a47a9f1399dfce891413d36a"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderState.createFuncs (cognitive 18): RenderState.createFuncs has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11, boolean chains 7. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0567f7dcf69f3024dd6729f293d2f85e224f2f1d31431cd1f606b9eb804a896"}},{"ruleId":"D2","level":"warning","message":{"text":"Primitive.recomputeBoundingSpheres (cognitive 18): Primitive.recomputeBoundingSpheres has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (8 pts), loops 7 (8 pts), boolean chains 2 (nesting depth added 2). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1376}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd3ddcb914dfdc73e6f122562a3fed7500a4ae77f68ef3971aae0550b925ef9"}},{"ruleId":"D2","level":"warning","message":{"text":"Geometry3DTileContent.initialize (cognitive 18): Geometry3DTileContent.initialize has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Geometry3DTileContent.js"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd9d63dc5b9e6ab3cb7c1ee4e5db4131778240fb10d2176344afe253923e739"}},{"ruleId":"D2","level":"warning","message":{"text":"ClippingPlaneCollection.ClippingPlaneCollection.update (cognitive 18): ClippingPlaneCollection.ClippingPlaneCollection.update has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (15 pts), boolean chains 2, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClippingPlaneCollection.js"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"5187bfe96f8ba6eba8c9a36fa3291c652766d6867a92ee4b1d3d01faad875ded"}},{"ruleId":"D2","level":"warning","message":{"text":"GltfGpmLocal.GltfGpmLocal (cognitive 18): GltfGpmLocal.GltfGpmLocal has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (18 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Extensions/Gpm/GltfGpmLocal.js"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"54a7a8bfcb3c32217c489d5c550268424f70de76bdd1b827715d2562e37924b6"}},{"ruleId":"D2","level":"warning","message":{"text":"GeoJsonLoader.createLinesPrimitive (cognitive 18): GeoJsonLoader.createLinesPrimitive has cognitive complexity 18 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 3 (8 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/GeoJsonLoader.js"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5965a2cc3789fadf94e99a91a1ebd96d099b226e60b6227b518e5c8cd9b3a20"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageBasedLightingPipelineStage.ImageBasedLightingPipelineStage.process (cognitive 18): ImageBasedLightingPipelineStage.ImageBasedLightingPipelineStage.process has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 5 (nesting depth added 4). Of this number, 17 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ImageBasedLightingPipelineStage.js"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a1afa9a3974157fa896fa96995b67f781948b5b44b0ba56aebc0752d1be7e7c"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassificationModelDrawCommand.ClassificationModelDrawCommand.pushCommands (cognitive 18): ClassificationModelDrawCommand.ClassificationModelDrawCommand.pushCommands has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ClassificationModelDrawCommand.js"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"812d81be8fc59a5e12070dae200807d72314c78e7f54eb90060e1e7d1d10810d"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelDrawCommand.ModelDrawCommand.pushCommands (cognitive 18): ModelDrawCommand.ModelDrawCommand.pushCommands has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelDrawCommand.js"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"09bb379cb5249cf6cfb89ce0f849ce514fd23ae1855a48d352780f23fc38ba95"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelImagery._imageryConfigurationsModified (cognitive 18): ModelImagery._imageryConfigurationsModified has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelImagery.js"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86513a1c85b9fef7a6922121d5a39abaa392331a08165db9d102758b31f90f0"}},{"ruleId":"D2","level":"warning","message":{"text":"TextureAtlas.TextureAtlas._processImageQueue (cognitive 18): TextureAtlas.TextureAtlas._processImageQueue has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (4 pts), error handling 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/TextureAtlas.js"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e67f77bab030e180b95c5fffdc671f3ba47a84c02039a254a01690c40271df8"}},{"ruleId":"D2","level":"warning","message":{"text":"createVectorTileBuffersFromModelComponents.gatherPrimitiveStats (cognitive 18): createVectorTileBuffersFromModelComponents.gatherPrimitiveStats has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (10 pts), loops 1 (4 pts), ternaries 2 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"814a2fd56e59df98f570c63e4df84bc77c4e3d8856b93c20e2e24633a339d625"}},{"ruleId":"D2","level":"warning","message":{"text":"Camera.rotateVertical (cognitive 18): Camera.rotateVertical has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 7 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":2083}}}],"partialFingerprints":{"codehealthFindingId/v1":"e07facb4e9ec9299ff99cccdc2fdcde37a0e38ffa015320c60eb7ae9884a0b9d"}},{"ruleId":"D2","level":"warning","message":{"text":"FrameRateMonitor.update (cognitive 18): FrameRateMonitor.update has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/FrameRateMonitor.js"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb29ecb774b0030e1059e4dfb671ed2f85158cc74568bfa259100794b49b41d"}},{"ruleId":"D2","level":"warning","message":{"text":"TranslucentTileClassification.updateResources (cognitive 18): TranslucentTileClassification.updateResources has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14 (15 pts), boolean chains 3 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TranslucentTileClassification.js"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce5e08e9d5b29a76680c83da3df1f5b5ba3cb965a88326bdffe33e12d858fa2"}},{"ruleId":"D2","level":"warning","message":{"text":"VoxelTraversal.updateKeyframeNodes (cognitive 18): VoxelTraversal.updateKeyframeNodes has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (16 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelTraversal.js"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"51eac62b93f4b7dfbc43317cab03485fc288df196b12ae304c2b679983869c5a"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeSurfaceTile.processTerrainStateMachine (cognitive 18): GlobeSurfaceTile.processTerrainStateMachine has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 4 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTile.js"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"115b4a8613bcb51d6314580b30632a7ed6a3a60d3809b104f4fa4097056bbdda"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeSurfaceShaderSet.destroy (cognitive 18): GlobeSurfaceShaderSet.destroy has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (14 pts), loops 2 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceShaderSet.js"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cca776008f60df0b251a614b394c595f4a1829db55153c506a6810a0d64c01f"}},{"ruleId":"D2","level":"warning","message":{"text":"TerrainFillMesh.getCorner (cognitive 18): TerrainFillMesh.getCorner has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c9b718ca86e85630776683f363d7049d2f36f73357d5a09d8b0f1da9dca23f"}},{"ruleId":"D2","level":"warning","message":{"text":"main.starBurst (cognitive 18): main.starBurst has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 3, boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/star-burst/main.js"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1f3ff8f103093402c4155e2a10336bc9313bd3ff352758a3c8e5ff23725132"}},{"ruleId":"D2","level":"warning","message":{"text":"Scene (cognitive 18): Scene has cognitive complexity 18 (threshold 15). Drivers by points: other 9, if/else 7, boolean chains 1, ternaries 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"2606107778b8a6ccd30f910bf211b5ce62dc006ef85fffb64164168290039cb7"}},{"ruleId":"D2","level":"warning","message":{"text":"processPolygon (cognitive 18): processPolygon has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 2 (5 pts), ternaries 3 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ae4daea7a3711c1639d3cf48a8af8fd5003153a047f7ea5fecc1c867678a987"}},{"ruleId":"D2","level":"warning","message":{"text":"setView (cognitive 18): setView has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (9 pts), other 7, boolean chains 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":1490}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c70be61fd8e0f837b615adb1c6cd7d0562125e32302123936154e70b22e0d2"}},{"ruleId":"D2","level":"warning","message":{"text":"PolygonGeometry (cognitive 18): PolygonGeometry has cognitive complexity 18 (threshold 15). Drivers by points: other 11, boolean chains 3, if/else 3, ternaries 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ccbd83ddd1abc97797ee7f1ed70ed3b533160f8666825bf22b2f9c30260b35a"}},{"ruleId":"D2","level":"warning","message":{"text":"updateSpecularMaps (cognitive 18): updateSpecularMaps has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (3 pts), boolean chains 1, other 1 (nesting depth added 8). Of this number, 12 points are the body\u0027s own statements and 6 belong to 6 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/DynamicEnvironmentMapManager.js"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"891b0490be0cda805548215eb6a5afef606329203daa6c32859439423c266b1c"}},{"ruleId":"D2","level":"warning","message":{"text":"upsample (cognitive 18): upsample has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9, ternaries 2 (6 pts), loops 2 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/HeightmapTerrainData.js"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b1dc104f43996538c9e4d817bfa3a461f293c64aef8211d5d8ed571ba690e6d"}},{"ruleId":"D2","level":"warning","message":{"text":"localFrameToFixedFrameGenerator::resultat (cognitive 18): localFrameToFixedFrameGenerator::resultat has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 5, other 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/FixedFrameTransforms.js"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3e8ea389e9511cfef54ff96d15842836cade85de544654ad94cbd8db7ff9da6"}},{"ruleId":"D2","level":"warning","message":{"text":"processDracoAttributes (cognitive 18): processDracoAttributes has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), ternaries 1 (3 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/PntsLoader.js"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eae5001dd486ac6d206ea9c3bceae5ff1a4ad658f8e146d1da31e3834d12f88"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylinePipeline.PolylinePipeline.wrapLongitude (cognitive 17): PolylinePipeline.PolylinePipeline.wrapLongitude has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (13 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylinePipeline.js"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2c7d32fea75507038007841c5f0a165e579386f466f172ab16a01fb41cb66dd"}},{"ruleId":"D2","level":"warning","message":{"text":"HermitePolynomialApproximation.fillCoefficientList (cognitive 17): HermitePolynomialApproximation.fillCoefficientList has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 4 (8 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/HermitePolynomialApproximation.js"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fed48affe9170b8dbcda55d573cda2258f1e042007d08255d96264919c5468a"}},{"ruleId":"D2","level":"warning","message":{"text":"MetadataClassProperty.parseType (cognitive 17): MetadataClassProperty.parseType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, boolean chains 6. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataClassProperty.js"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49b0b64e505cc0d1b01b1c2be46e697dfe10dd8759e3b50e5e42e3278a04887"}},{"ruleId":"D2","level":"warning","message":{"text":"Buffer.Buffer.copyFromBuffer (cognitive 17): Buffer.Buffer.copyFromBuffer has cognitive complexity 17 (threshold 15). Drivers by points: boolean chains 10, if/else 7. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Buffer.js"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ec3d1fc67db10c9d4882eae8376463de369fd45325ca7934cb07795a0844f38"}},{"ruleId":"D2","level":"warning","message":{"text":"CesiumTerrainProvider.checkLayer (cognitive 17): CesiumTerrainProvider.checkLayer has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (15 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":1344}}}],"partialFingerprints":{"codehealthFindingId/v1":"e53459d7fb9b3a4c170c17171c1ff4e02f23a3e83a0cbf5fbca3115a2a342caa"}},{"ruleId":"D2","level":"warning","message":{"text":"VectorPipeline.packPolygonRings (cognitive 17): VectorPipeline.packPolygonRings has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (8 pts), ternaries 2 (6 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VectorPipeline.js"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"b887352bdd66cef657c502835cf41d469deb8ddf79eef3c9af92c0f87d5406ca"}},{"ruleId":"D2","level":"warning","message":{"text":"sampleTerrainMostDetailed.sampleTerrainMostDetailed (cognitive 17): sampleTerrainMostDetailed.sampleTerrainMostDetailed has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 2 (nesting depth added 5). Of this number, 16 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/sampleTerrainMostDetailed.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"62abcd330d76352bab54a3944730556861ac1ad0cc6bc6458119f012bbca1105"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicGeometryUpdater.DynamicGeometryUpdater.update (cognitive 17): DynamicGeometryUpdater.DynamicGeometryUpdater.update has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/DynamicGeometryUpdater.js"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d610d1b077f3e08e975d5f62a32272717805f6aa3f1153087fe522c8f8b090"}},{"ruleId":"D2","level":"warning","message":{"text":"GroundPolylinePrimitive.updateAndQueueCommands (cognitive 17): GroundPolylinePrimitive.updateAndQueueCommands has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPolylinePrimitive.js"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe76819a06e4b35bbeb10374d8854c3d16fedee6a54217855311e39786566b6"}},{"ruleId":"D2","level":"warning","message":{"text":"GltfLoader.processLoaders (cognitive 17): GltfLoader.processLoaders has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 4, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"9beaa8cdd693cf2119adc23469a44bfec6c49ad7cf54fe71678af9871a6916ae"}},{"ruleId":"D2","level":"warning","message":{"text":"EdgeVisibilityPipelineStage.EdgeVisibilityPipelineStage.process (cognitive 17): EdgeVisibilityPipelineStage.EdgeVisibilityPipelineStage.process has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (11 pts), boolean chains 4, ternaries 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"f954e3c811797b22556b49ca2978be2d3039c0578a1e2b04149f1b83dd2c979c"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageryLayerCollection.pickImageryHelper (cognitive 17): ImageryLayerCollection.pickImageryHelper has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayerCollection.js"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"444237bcda691531c9e2f7194c5aa3a8980f95513d9357d19c1e5a0362d1d4c2"}},{"ruleId":"D2","level":"warning","message":{"text":"DataSourceDisplay.DataSourceDisplay.getBoundingSphere (cognitive 17): DataSourceDisplay.DataSourceDisplay.getBoundingSphere has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/DataSourceDisplay.js"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"10eb27781588d4819d47db00de2012dd92fdab6e1124e1254dbde3fc0f550d02"}},{"ruleId":"D2","level":"warning","message":{"text":"CameraFlightPath.createUpdate3D (cognitive 17): CameraFlightPath.createUpdate3D has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), ternaries 2 (6 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CameraFlightPath.js"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c80861aa5a07ed062c198ca90d31eac23e131a53003058cdda547f1aa72d1d"}},{"ruleId":"D2","level":"warning","message":{"text":"PostProcessStageComposite.isSelectedTextureDirty (cognitive 17): PostProcessStageComposite.isSelectedTextureDirty has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 4, loops 1 (2 pts), ternaries 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStageComposite.js"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"60531b183f108f0d7263e236637a841549a417643a6d92c8ff167c40e2c0a0b3"}},{"ruleId":"D2","level":"warning","message":{"text":"GeoJsonPrimitive.normalizePolygon (cognitive 17): GeoJsonPrimitive.normalizePolygon has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GeoJsonPrimitive.js"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd88fdddd71f344be60c27ab619741de45937505b0e8cc51c2255aae5ef8ab1"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SSymbology.I3SSymbology._getSymbology (cognitive 17): I3SSymbology.I3SSymbology._getSymbology has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (7 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SSymbology.js"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b7173de948fc814afc1eed9b95fb22b38075bf66bbac2361624c73473ba000"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeI3S.decodeDracoAttribute (cognitive 17): decodeI3S.decodeDracoAttribute has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9, loops 8. Most of this is not in the body itself: 1 of the 17 points is its own statement and the rest belongs to 8 function literals inside it that branch (lines 1216, 1234, 1252, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1204}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6c3d412e11714e3850732f40369429b5515c634f01adceb942838fc26965c8a"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeI3S.decodeAndCreateGltf (cognitive 17): decodeI3S.decodeAndCreateGltf has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), loops 2 (5 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1514}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3ced71d12b1bbd8dc22dae96b95906514cf6982290a9fca691a1410c82e828d"}},{"ruleId":"D2","level":"warning","message":{"text":"loadFromUrl.loadFromUrl (cognitive 17): loadFromUrl.loadFromUrl has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (17 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Gallery/loadFromUrl.ts"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"f599ed915338da8685d1ce244a6abe167b987fe7753b63e45ea6e31c65bd4943"}},{"ruleId":"D2","level":"warning","message":{"text":"ConsoleWrapper.errorLineNumber (cognitive 17): ConsoleWrapper.errorLineNumber has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), error handling 1 (4 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/util/ConsoleWrapper.ts"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"d585f3162791827029040ed5b07d51d4b5f40a809f45b9bf025bc2f2ee6fa38b"}},{"ruleId":"D2","level":"warning","message":{"text":"TimelineTrack.TimelineTrack.render (cognitive 17): TimelineTrack.TimelineTrack.render has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/TimelineTrack.js"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"d91ef5cdc2d42cde0cf6c854d1148051d1c0f4c086a76fb10f82dcad69a2c28b"}},{"ruleId":"D2","level":"warning","message":{"text":"splitTriangle (cognitive 17): splitTriangle has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (12 pts), ternaries 3, boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1899}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a638af9b656dd8d6beee9e46828106195a4752b9b65d7e026b7897293cfbaa5"}},{"ruleId":"D2","level":"warning","message":{"text":"computeTriangleAttributes (cognitive 17): computeTriangleAttributes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2168}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0deb7724a6327b72e4845b7210db31b36a3660fd2135c268e0ec61ae1cd8e3"}},{"ruleId":"D2","level":"warning","message":{"text":"initializeMaterial (cognitive 17): initializeMaterial has cognitive complexity 17 (threshold 15). Drivers by points: other 9, if/else 5 (6 pts), ternaries 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f08c8f987e427dd2453c5930fbcdbe457d273e180d38c966074997bc06f654"}},{"ruleId":"D2","level":"warning","message":{"text":"createMesh (cognitive 17): createMesh has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (12 pts), ternaries 2, boolean chains 1, loops 1, other 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe59bc33c6a8536a0651c3be56814acbf3976bcefa50eaaa3789aade1f631daf"}},{"ruleId":"D2","level":"warning","message":{"text":"showErrorPanel (cognitive 17): showErrorPanel has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 2 (nesting depth added 8). Of this number, 15 points are the body\u0027s own statements and 2 belong to 3 function items inside it that branch. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"5deaa339f40c4b984b91131e3a611cdd3f371c0665d7d759f67ce525f17428c1"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 17): update has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (13 pts), other 3, ternaries 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/UniformState.js"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"2610b4fb26c067c938f46872ec0eb75b3df99ee2abf829ce54fc59fef63b712f"}},{"ruleId":"D2","level":"warning","message":{"text":"createIconStyleFromBillboard (cognitive 17): createIconStyleFromBillboard has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 1, other 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4e9cb0d65c2fbdcdd42178fa75debf3aa7c578f67ad64b13c0c85192c16b5a"}},{"ruleId":"D2","level":"warning","message":{"text":"processLineStyleUniforms (cognitive 17): processLineStyleUniforms has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 4). Of this number, 10 points are the body\u0027s own statements and 7 belong to 4 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/MaterialPipelineStage.js"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0a7227497a14042e746335304d8bcabf9f0205d249d582b8f19b67c6cd68829"}},{"ruleId":"D2","level":"warning","message":{"text":"beginFrame (cognitive 17): beginFrame has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 5). Of this number, 13 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Globe.js"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"20770f9cde9a85d161544e0f64424664c8928cc0db5b29a27cbc1ede633df4e2"}},{"ruleId":"D2","level":"warning","message":{"text":"packPolygonHierarchy (cognitive 17): packPolygonHierarchy has cognitive complexity 17 (threshold 15). Drivers by points: loops 3 (7 pts), if/else 3 (6 pts), ternaries 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec6f39810dead934d8c37a46d55af589ccb6a150d60742571ac002a2ff47aad"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 17): update has cognitive complexity 17 (threshold 15). Drivers by points: boolean chains 7, if/else 7, ternaries 3. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CloudCollection.js"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f04aa068af6d230ad4065b2d6042e6b23fec16de1a29e4507d6058029963cd"}},{"ruleId":"D2","level":"warning","message":{"text":"getLogDepthShaderProgram (cognitive 17): getLogDepthShaderProgram has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (9 pts), loops 4 (6 pts), ternaries 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/DerivedCommand.js"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcfc6be9eb7b4b5a8d37e6a9dc2fa94759de823d3b6b27b522c3b90958340554"}},{"ruleId":"D2","level":"warning","message":{"text":"barycentricCoordinates.barycentricCoordinates (cognitive 16): barycentricCoordinates.barycentricCoordinates has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/barycentricCoordinates.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"37b781ac3a0bbb4ba432c082ba29d50dd29a50643054f184c7c83b538aaa8cdc"}},{"ruleId":"D2","level":"warning","message":{"text":"PolylineVolumeGeometryLibrary.computeRoundCorner (cognitive 16): PolylineVolumeGeometryLibrary.computeRoundCorner has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), ternaries 2 (3 pts), loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineVolumeGeometryLibrary.js"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a94f7db974587c763258e0e98470deecd5024d5c6909b2c0ff809698d03fe2"}},{"ruleId":"D2","level":"warning","message":{"text":"CorridorGeometry.computePositionsExtruded (cognitive 16): CorridorGeometry.computePositionsExtruded has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (7 pts), loops 3 (4 pts), ternaries 1 (3 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"2705423496bca6b9f20860d6714a327e718ca26beeb13a5f34da1e1a8d8857b0"}},{"ruleId":"D2","level":"warning","message":{"text":"TileAvailability.subtractRectangle (cognitive 16): TileAvailability.subtractRectangle has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/TileAvailability.js"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2c493cde203b858eaebda8d062817ba011658f8c3c1a51993999338829976d"}},{"ruleId":"D2","level":"warning","message":{"text":"Buffer.Buffer.getBufferData (cognitive 16): Buffer.Buffer.getBufferData has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Buffer.js"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e25b59a342915b8541c4977877df929e230d09ec86840036dec7dbccda770c"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelReader.computeInstanceTransforms (cognitive 16): ModelReader.computeInstanceTransforms has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelReader.js"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"9503ab6945623250e36105dfb5a3f3943aabea9202cf5b8e8450ba37aa47479d"}},{"ruleId":"D2","level":"warning","message":{"text":"Framebuffer.Framebuffer.destroy (cognitive 16): Framebuffer.Framebuffer.destroy has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (7 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Framebuffer.js"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc25a0f99661a09b9dcaf9f233511651d7227f39e0545888e4eb2ddce63763c"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderState.RenderState.partialApply (cognitive 16): RenderState.RenderState.partialApply has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (6 pts), boolean chains 4, ternaries 4, loops 1 (2 pts) (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"463a32ad3291dbf18fde1fa4d2a048b6fe7bb18dc7deb51e62401de83439eb77"}},{"ruleId":"D2","level":"warning","message":{"text":"VideoSynchronizer.VideoSynchronizer._onTick (cognitive 16): VideoSynchronizer.VideoSynchronizer._onTick has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 2, ternaries 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VideoSynchronizer.js"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3f486787c1520b0905c766a0b806d6f801c8f4fa686c8fcb7582c2c5c329cf"}},{"ruleId":"D2","level":"warning","message":{"text":"BillboardVisualizer.BillboardVisualizer.update (cognitive 16): BillboardVisualizer.BillboardVisualizer.update has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/BillboardVisualizer.js"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"36481cbddac2b1e39d3e62f2d84603b0f4c63e0ef34a896f85c8ea089a8c1262"}},{"ruleId":"D2","level":"warning","message":{"text":"Material.Material.update (cognitive 16): Material.Material.update has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 4, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f05533060451a5f261f82a20c9cc0d410e881b5754fbcafd4ef69b5f058bb36"}},{"ruleId":"D2","level":"warning","message":{"text":"Expression.Node._evaluateLiteralVector (cognitive 16): Expression.Node._evaluateLiteralVector has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (13 pts), boolean chains 2, loops 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1152}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c40640743bfeafe497f68ae4aa06cd1e85f27b18641f9b8d60d9a2160b7702e"}},{"ruleId":"D2","level":"warning","message":{"text":"parseBatchTable.transcodeBinaryPropertiesAsPropertyAttributes (cognitive 16): parseBatchTable.transcodeBinaryPropertiesAsPropertyAttributes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 3, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/parseBatchTable.js"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"9951ffeaff8c46748fb66cdd75b0ab08daeb7eecab4be888ddf57bc62e971b90"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelAnimationChannel.createSplines (cognitive 16): ModelAnimationChannel.createSplines has cognitive complexity 16 (threshold 15). Drivers by points: loops 3 (10 pts), if/else 4 (6 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelAnimationChannel.js"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"75883341160719c58c5964466e21f51fa05849733a28543bf6af2a7a4df4ce95"}},{"ruleId":"D2","level":"warning","message":{"text":"GeometryPipelineStage.GeometryPipelineStage.process (cognitive 16): GeometryPipelineStage.GeometryPipelineStage.process has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (8 pts), boolean chains 5, ternaries 1 (2 pts), loops 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/GeometryPipelineStage.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"46570b977d1ca19cde9f275fc49d0a97e2546d1d00dd7d693487e5682cf829f0"}},{"ruleId":"D2","level":"warning","message":{"text":"GetFeatureInfoFormat.esriXmlToFeatureInfo (cognitive 16): GetFeatureInfoFormat.esriXmlToFeatureInfo has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (10 pts), if/else 3 (6 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GetFeatureInfoFormat.js"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"f289d338f42138b4c758db5cb5923da3645ccb02974e5fe8fa86c546c064f08a"}},{"ruleId":"D2","level":"warning","message":{"text":"MaterialPipelineStage.processMaterialUniforms (cognitive 16): MaterialPipelineStage.processMaterialUniforms has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), boolean chains 7 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/MaterialPipelineStage.js"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ffac6b5cdffee07b9bfabb007ea90be1131110099baed3b65cab7c416cfd90"}},{"ruleId":"D2","level":"warning","message":{"text":"Cesium3DTile.Cesium3DTile.createBoundingVolume (cognitive 16): Cesium3DTile.Cesium3DTile.createBoundingVolume has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (16 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":1935}}}],"partialFingerprints":{"codehealthFindingId/v1":"014390f60e6c981b6d1fa43de7be865d890b56c2369211e2cdb6d649c35a8c81"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageryLayerCollection.ImageryLayerCollection._update (cognitive 16): ImageryLayerCollection.ImageryLayerCollection._update has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayerCollection.js"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"75a57ba7085a32adad5d562adc14c574ab30fb3120c020b501b77de5688bd60c"}},{"ruleId":"D2","level":"warning","message":{"text":"CompositeEntityCollection.recomposite (cognitive 16): CompositeEntityCollection.recomposite has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 5 (7 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CompositeEntityCollection.js"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba6bb872bfa76627c94ed8e3d0e87300e75df39bba2b16447981a68a855e85d"}},{"ruleId":"D2","level":"warning","message":{"text":"EntityCluster.EntityCluster.update (cognitive 16): EntityCluster.EntityCluster.update has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, boolean chains 5. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityCluster.js"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"972b75ecb15444b966fe329614fb275c48335bd3fbdf37b83d781c6e5f3ddb95"}},{"ruleId":"D2","level":"warning","message":{"text":"CzmlDataSource.processModel (cognitive 16): CzmlDataSource.processModel has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 2 (6 pts) (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":3246}}}],"partialFingerprints":{"codehealthFindingId/v1":"618bf9f162defbf552ac50db5a5216039a484ad3c90b0a1437791e58562b52e3"}},{"ruleId":"D2","level":"warning","message":{"text":"PathVisualizer.computeVvlhTransform (cognitive 16): PathVisualizer.computeVvlhTransform has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 2 (nesting depth added 8). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"4126af3c8081334baafd70e483659dd29ad9d9eb38e1de31c8d092af16ca5543"}},{"ruleId":"D2","level":"warning","message":{"text":"GeoJsonDataSource.defaultDescribe (cognitive 16): GeoJsonDataSource.defaultDescribe has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"87890bfe55cb5ded736247e44ddc8f062c26f6778fc274cd50d37a71603686e6"}},{"ruleId":"D2","level":"warning","message":{"text":"Camera.zoom2D (cognitive 16): Camera.zoom2D has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":2173}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8528ad4c1723885bf40b2812779c3abc9c1a1238fc8f4a889b5d9fccfc36ba"}},{"ruleId":"D2","level":"warning","message":{"text":"Camera.rectangleCameraPosition3D (cognitive 16): Camera.rectangleCameraPosition3D has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 3, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":2584}}}],"partialFingerprints":{"codehealthFindingId/v1":"b29ee4eff97911ea9745eac4e4ab31de8a83b227576c8719c8e5ff963c723577"}},{"ruleId":"D2","level":"warning","message":{"text":"JobScheduler.JobScheduler.execute (cognitive 16): JobScheduler.JobScheduler.execute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/JobScheduler.js"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aa71cf961068efa27bfb064ed7d6ee43ce2c1f1691e02075db269c766d7ac48"}},{"ruleId":"D2","level":"warning","message":{"text":"PickFramebuffer.pickObjectsFromPixels (cognitive 16): PickFramebuffer.pickObjectsFromPixels has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (11 pts), boolean chains 4, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PickFramebuffer.js"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac0db31cc78e574b1fd25a6c8bc3720a8ff6c59d9628648c7cb9068779702e2"}},{"ruleId":"D2","level":"warning","message":{"text":"ShadowMap.ShadowMap.update (cognitive 16): ShadowMap.ShadowMap.update has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (16 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":1566}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dbc493e758d5b437d550203fe9650ba3440cf6369064fb1244a971c3c4ed0b0"}},{"ruleId":"D2","level":"warning","message":{"text":"PostProcessStage.isSelectedTextureDirty (cognitive 16): PostProcessStage.isSelectedTextureDirty has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 3, loops 1 (2 pts), ternaries 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStage.js"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23087ed42dcc297d75905c5c11d1cd6ed82eb6496fa59aed7ba6a9a825c10ef"}},{"ruleId":"D2","level":"warning","message":{"text":"ScreenSpaceCameraController.zoom3D (cognitive 16): ScreenSpaceCameraController.zoom3D has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 1, ternaries 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2320}}}],"partialFingerprints":{"codehealthFindingId/v1":"0827fe04cecec925067a023734b5d2433742469dfe574006060407f3644e5069"}},{"ruleId":"D2","level":"warning","message":{"text":"Scene.Scene.updateDerivedCommands (cognitive 16): Scene.Scene.updateDerivedCommands has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 10, if/else 6. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":1896}}}],"partialFingerprints":{"codehealthFindingId/v1":"436fbb86aa30fd690db486bb3ef296d58e95f6f57612744344ad6e28ba2ceb3f"}},{"ruleId":"D2","level":"warning","message":{"text":"Scene.renderEnvironment (cognitive 16): Scene.renderEnvironment has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 1, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3165}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef3b91b776bc4ea8f9fac6d86c616b7f9eae40a18ba31635505f9b097b002aa"}},{"ruleId":"D2","level":"warning","message":{"text":"Scene.Scene.updateHeight (cognitive 16): Scene.Scene.updateHeight has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, boolean chains 6, loops 1 (2 pts) (nesting depth added 1). Most of this is not in the body itself: 7 of the 16 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 4319, 4381, 4352, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":4309}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab446856e60903b4ec04ef2fe578e60e353264f25523f1c8dfd8061a8f5d01cf"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobeSurfaceTile.updateExaggeration (cognitive 16): GlobeSurfaceTile.updateExaggeration has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTile.js"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbd518bb84883f1cdaffc84fa4fd769ca706ade08ad90ab4023917ca31ffc40f"}},{"ruleId":"D2","level":"warning","message":{"text":"I3SNode.filterFeatures (cognitive 16): I3SNode.filterFeatures has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 2 (7 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SNode.js"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee57751123c508cc0d45331b3bdfc751e46af36edf3405c5e5089b641c41f405"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeMVT.decodeValue (cognitive 16): decodeMVT.decodeValue has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (8 pts), boolean chains 7, loops 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/decodeMVT.js"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"80d0f0ad9b5af9395b4f4c8b03325d517090cdb81e41d1a2fc29d5eb667936bb"}},{"ruleId":"D2","level":"warning","message":{"text":"decodeI3S.decodeBinaryGeometry (cognitive 16): decodeI3S.decodeBinaryGeometry has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 3 (6 pts), boolean chains 1, error handling 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1437}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb66c0154d053a8726d5d55d812faa31b1fbad0e864549f6e6fb2dcde2984a7c"}},{"ruleId":"D2","level":"warning","message":{"text":"main.handler.setInputAction() (cognitive 16): main.handler.setInputAction() has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-1.1-cdb-yemen/main.js"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"d612b33e16d9daebc96078eb8271a760feb0dee87af6986cc35d584c03e625bd"}},{"ruleId":"D2","level":"warning","message":{"text":"AnchorPointVisualizer.initialize (cognitive 16): AnchorPointVisualizer.initialize has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3, boolean chains 1 (nesting depth added 7). Most of this is not in the body itself: 0 of the 16 points are its own statements and the rest belongs to one function literal inside it that branches (line 906). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-nga-gpm-visualization/main.js"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb631f1bcef384857decd6caa3033348f41877c5fbf209a2cd0f3f74bc049472"}},{"ruleId":"D2","level":"warning","message":{"text":"main.viewer.screenSpaceEventHandler.setInputAction() (cognitive 16): main.viewer.screenSpaceEventHandler.setInputAction() has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 6). Most of this is not in the body itself: 4 of the 16 points are its own statements and the rest belongs to one function literal inside it that branches (line 114). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/i3s-building-scene-layer/main.js"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecdc33a1ceca47aadd2317153c72bdd7a2babe71dec4fe81329498f9fdce6549"}},{"ruleId":"D2","level":"warning","message":{"text":"Viewer.enableVRUI (cognitive 16): Viewer.enableVRUI has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, ternaries 2 (3 pts), boolean chains 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c367a6bb1c0eef0f52a6fa0451914999c7fa3333c8b3b1f79f93b8cc7c0517f"}},{"ruleId":"D2","level":"warning","message":{"text":"moveCoreFiles.checkFile (cognitive 16): moveCoreFiles.checkFile has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/moveCoreFiles.js"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"c494a21ff71ef7a75e85b68977d1c9282f1c05307a2b6e931157fc96d8e40cb3"}},{"ruleId":"D2","level":"warning","message":{"text":"render (cognitive 16): render has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (9 pts), boolean chains 7 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":4629}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce90aad34ea6cd90dfefd339832c8aec417d59794cc0cba482034ec63d028252"}},{"ruleId":"D2","level":"warning","message":{"text":"updateClock (cognitive 16): updateClock has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (14 pts), other 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":4666}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2115a5eb34c612221804176d2d9712df2a7df3ea134cda51111ec547b211102"}},{"ruleId":"D2","level":"warning","message":{"text":"createTileUniformMap (cognitive 16): createTileUniformMap has cognitive complexity 16 (threshold 15). Drivers by points: other 12, if/else 2, boolean chains 1, ternaries 1. Most of this is not in the body itself: 1 of the 16 points is its own statement and the rest belongs to 65 function items inside it that branch (u_clippingPlanes, u_clippingPlanesMatrix, u_vectorSegmentTexture, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1909}}}],"partialFingerprints":{"codehealthFindingId/v1":"99bf97284419380ff3e6eacb177c5ea992deb6a44c8746589ef40f01c514e885"}},{"ruleId":"D2","level":"warning","message":{"text":"constructor (cognitive 16): constructor has cognitive complexity 16 (threshold 15). Drivers by points: other 16. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix4.js"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1ccf73ce0f4873faf78499287e80b67e11bfca06a7a3ee39571ad1ad78dcc67"}},{"ruleId":"D2","level":"warning","message":{"text":"combineQueryParameters (cognitive 16): combineQueryParameters has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), ternaries 1 (4 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"25414cbdfc2b4b321bbc9a43dd53dc1244d33e63a95dea0b5c37c4f0703558b2"}},{"ruleId":"D2","level":"warning","message":{"text":"Primitive (cognitive 16): Primitive has cognitive complexity 16 (threshold 15). Drivers by points: other 12, boolean chains 3, if/else 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"6392931ab0df2e5e4cde484c33eac00e9cdeaf4cac5c139b8c4c1513cfef4266"}},{"ruleId":"D2","level":"warning","message":{"text":"BillboardCollection (cognitive 16): BillboardCollection has cognitive complexity 16 (threshold 15). Drivers by points: other 8, if/else 3 (5 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 3). Of this number, 11 points are the body\u0027s own statements and 5 belong to 5 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"372ed3b83707deb0654a18c04664a5c5104d1ff4c8ee35c1a1c7dc19faa2331b"}},{"ruleId":"D2","level":"warning","message":{"text":"fromCssColorString (cognitive 16): fromCssColorString has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6, ternaries 3 (6 pts), other 4 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Color.js"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"e35b45682c878d34e2136cd0f5be0259b6552d17305156a515ab417f1be93371"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageryLayer (cognitive 16): ImageryLayer has cognitive complexity 16 (threshold 15). Drivers by points: other 16. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayer.js"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1c366b1153bc9968c7995a962bf5e51e304516852cc981be166b8c5a6d9b50b"}},{"ruleId":"D2","level":"warning","message":{"text":"fromSubtreeJson (cognitive 16): fromSubtreeJson has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, loops 2 (3 pts), other 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImplicitSubtree.js"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"411866186db8167232a291fe72e53bd1987a2df611dc36dad7ee86fff88836aa"}},{"ruleId":"D2","level":"warning","message":{"text":"VertexArray (cognitive 16): VertexArray has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 4, boolean chains 2, other 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/VertexArray.js"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"0730321e9db76326cb85db7e12c66ad0938937eb13922fdea1a6239c63aa8960"}},{"ruleId":"D2","level":"warning","message":{"text":"getAttributes (cognitive 16): getAttributes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), ternaries 3 (6 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/TerrainEncoding.js"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"990f546c473c2fbf67f03ad5ebd279c71854a82ff757389b1864a652ef0cd4b5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ChatPanel.ChatPanel: FunctionTooLong \u2014 ChatPanel runs 848 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 748 over it, 8.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ChatPanel.tsx"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"852296a7c782feea8e74fd82515009d81165d2ae2c1fba6f980a7099ee33ec99"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DataSources/CzmlDataSource.js: FileTooLong \u2014 3889 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 3389 over it, 7.78\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14e3804a27319edb217c39bcf962eba33b5dbac3c04c95097c5e67aafd8ba2ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GlobeSurfaceTileProvider.addDrawCommandsForTile: FunctionTooLong \u2014 addDrawCommandsForTile runs 618 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 518 over it, 6.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":2510}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5ac9eec12987b014f39a90049f53ea62cb803e4a425940e33941023acd992e5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DataSources/KmlDataSource.js: FileTooLong \u2014 2793 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 2293 over it, 5.59\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f789be4c085ed00b3985cb59a0c52d54c897e04f83bfa1525e5143aacad655"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Scene.js: FileTooLong \u2014 2571 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 2071 over it, 5.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71c7c917c92dd434471ddb921caa2a4f39893165d8d07fa0db73b83272fa600d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: App.App: FunctionTooLong \u2014 App runs 504 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 404 over it, 5.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2428808d4b94e388f6796c16efc516ba490083175456d4a6715183a269751c2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: VoxelInspectorViewModel.VoxelInspectorViewModel: FunctionTooLong \u2014 VoxelInspectorViewModel runs 503 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 403 over it, 5.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/VoxelInspector/VoxelInspectorViewModel.js"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8ca02c12ec1dc4cca66fd76713e366c050be41ffc96cc026bf35ced1d0a0b8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: buildVectorGltfFromMVT.buildVectorGltfFromMVT: FunctionTooLong \u2014 buildVectorGltfFromMVT runs 489 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 389 over it, 4.89\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/buildVectorGltfFromMVT.js"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"d73761cbb8681386a96e39c94503550f3d62e7ece4d5ac4136bcb0790d094515"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Camera.js: FileTooLong \u2014 2167 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1667 over it, 4.33\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c8d86e23b39dfa1714755ec396bba0b77068c41c37ef2fa4f7d10cec92c9a3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/GeometryPipeline.js: FileTooLong \u2014 2110 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1610 over it, 4.22\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":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"47696b72456c7945b76f55ba309fdbc295e11369aba93251ed893b17db464b88"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/ScreenSpaceCameraController.js: FileTooLong \u2014 2036 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1536 over it, 4.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"416e1083c00aac73b8cea5df6940f570d45a0d71c69e5beead82e00e04495544"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/GlobeSurfaceTileProvider.js: FileTooLong \u2014 2031 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1531 over it, 4.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc65739a894a35557ec81f213c03457b6e007c6a27937693083de6790be8b985"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Matrix4: ClassTooLong \u2014 1622 significant lines (blank, comment-only and punctuation-only lines excluded), 62 methods. The bar is 400 significant lines; this is 1222 over it, 4.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix4.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"e08c8df6abd0ca2f043d2ef8dd30129720e3bef0b538a20c9defed17f91cec69"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/GltfLoader.js: FileTooLong \u2014 2014 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1514 over it, 4.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd1dfd2295f9044176c932df87580d356abc8217b53c7fe0cf7824e17422873"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GroundPolylineGeometry.generateGeometryAttributes: FunctionTooLong \u2014 generateGeometryAttributes runs 401 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 301 over it, 4.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4069b83efdba16129998f37082c6f374979cfd128392e3a8212987cafb7c36b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: TerrainFillMesh.createFillMesh: FunctionTooLong \u2014 createFillMesh runs 401 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 301 over it, 4.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d50cfc9f33b3ec1087182a0dee48c21e44ab8337ae921fb14d24f10971e4e32"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CorridorGeometry.combine: FunctionTooLong \u2014 combine runs 373 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 273 over it, 3.73\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf02ed3ae63180dcd783ec00be9f35afb42b6ece93e597ba072366851465504"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Viewer.Viewer: FunctionTooLong \u2014 Viewer runs 352 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 252 over it, 3.52\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9ececdd2dc2edea2f3fe19683147a764d388e4f514be6b3d848606a48913c1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createVerticesFromGoogleEarthEnterpriseBuffer.processBuffer: FunctionTooLong \u2014 processBuffer runs 350 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 250 over it, 3.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"e70c802cd77364159f4d9d92e89c9d8b62c24fccee6b07e6e55770ff28de33f9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: RectangleGeometry.constructExtrudedRectangle: FunctionTooLong \u2014 constructExtrudedRectangle runs 347 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 247 over it, 3.47\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"702a72d309b2707875931bb5baaf3161b014835c5f4d5404a418de316066cf26"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/Matrix4.js: FileTooLong \u2014 1702 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units), about 95% of them inside a single declaration: Matrix4 (62-3047). The bar is 1500 significant lines; this is 202 over it, 1.13\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix4.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dbe04dc114ec156623a37c0059b273ce320dd374f519a4569eed0f7c96239cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/TerrainFillMesh.js: FileTooLong \u2014 1701 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1201 over it, 3.40\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6f5f58577e87cdac5fea0f403ac43bb94f21efe346a94a0319c7956d6da2eeb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: renderBufferPolylineCollection.renderBufferPolylineCollection: FunctionTooLong \u2014 renderBufferPolylineCollection runs 335 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 235 over it, 3.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolylineCollection.js"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee5c7449b0aada6413d4cd3f3c980c8ed63ef888bb3cd480b35c17feb75f5e5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processMaterialProperty: FunctionTooLong \u2014 processMaterialProperty runs 307 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 207 over it, 3.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"7896fbc7bcea53ea2b2b040456e49d18a2831d7978589b46d3c0ae525e1bc552"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createVerticesFromQuantizedTerrainMesh.createVerticesFromQuantizedTerrainMesh: FunctionTooLong \u2014 createVerticesFromQuantizedTerrainMesh runs 307 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 207 over it, 3.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVerticesFromQuantizedTerrainMesh.js"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c090ae1a8db2eb316f3228a1417662d5ef8a562152295e5b6e4caa99fdfe718e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Expression.js: FileTooLong \u2014 1507 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1007 over it, 3.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5770023b01a8a01755fcd96b66df895156a5b070720881530afb7e969de7b084"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/Model.js: FileTooLong \u2014 1502 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 1002 over it, 3.00\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3322ce2329850d371e06ea6083d90bfddf1af4d60018c8d2d0dabf0d9f9c66ac"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: EdgeVisibilityPipelineStage.createQuadEdgeGeometry: FunctionTooLong \u2014 createQuadEdgeGeometry runs 299 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 199 over it, 2.99\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"928dcc0c610541cb1fc0ff045ff470ddc940c74a28780d00a83bad4793c34b66"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: decodeI3S.generateGltfBuffer: FunctionTooLong \u2014 generateGltfBuffer runs 299 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 199 over it, 2.99\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb673e6f8d125552f20615595612978d137ee22b144ccb05abb72c06c2d7119"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Primitive.js: FileTooLong \u2014 1491 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 991 over it, 2.98\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Primitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80221b298c4b11a23fd88e1508a59d64b76e745c1d145d465493a2bfd43c7be"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: upsampleQuantizedTerrainMesh.upsampleQuantizedTerrainMesh: FunctionTooLong \u2014 upsampleQuantizedTerrainMesh runs 296 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 196 over it, 2.96\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/upsampleQuantizedTerrainMesh.js"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"59aa1c37798d848d35f09ad0f2708578b2fd54b7a27dc0f67c95071337b7c076"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: useToolChainExecution.useToolChainExecution: FunctionTooLong \u2014 useToolChainExecution runs 296 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 196 over it, 2.96\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"e346a6eee95108debbc67a386868064a6593833cf1fc10b10be295a466635a54"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ScreenSpaceCameraController.handleZoom: FunctionTooLong \u2014 handleZoom runs 292 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 192 over it, 2.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"e39524f024fdec47b5f1054246be33def3071b5194f14387bed0bed2bab3f4d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Cesium3DTileset.js: FileTooLong \u2014 1456 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 956 over it, 2.91\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"008ebb66da18a7cccd12d0b305d2dc0479134a054b29d185962b4db233846402"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlobeSurfaceShaderSet.getShaderProgram: MethodTooLong \u2014 getShaderProgram runs 291 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 191 over it, 2.91\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceShaderSet.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"852ed6b86ecab96259c89e84f91c73b80cb58a5e797e9e1210544a18734033e0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PointCloud.createShaders: FunctionTooLong \u2014 createShaders runs 276 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 176 over it, 2.76\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"1665d1427ff50b173d660e9d1654c4e1f62188d7fc396aeb6b662dc9a8038e12"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ApiKeyDialog.ApiKeyDialogBody: FunctionTooLong \u2014 ApiKeyDialogBody runs 272 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 172 over it, 2.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ApiKeyDialog.tsx"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"a689e6653df9abe01b7555255514be56b8377f2118d5897da4138e186ca290dc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CesiumInspectorViewModel.CesiumInspectorViewModel: FunctionTooLong \u2014 CesiumInspectorViewModel runs 264 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 164 over it, 2.64\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/CesiumInspector/CesiumInspectorViewModel.js"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f288f4b729cae8a51a21627f91e3502734cc3468bc50f4eb0e7daac6d7bcc88"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/ShadowMap.js: FileTooLong \u2014 1294 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 794 over it, 2.59\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19b503b31dc8811035725a794b5af66b372706d1e663e4c0a24e5e77c83316f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createDefaultImageryProviderViewModels.createDefaultImageryProviderViewModels: FunctionTooLong \u2014 createDefaultImageryProviderViewModels runs 257 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 157 over it, 2.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/BaseLayerPicker/createDefaultImageryProviderViewModels.js"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e5583b829cef1513b58bf464569bb54d80d17c26b291210624236b69c585683"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PolygonGeometry.computeAttributes: FunctionTooLong \u2014 computeAttributes runs 256 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 156 over it, 2.56\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06539663110a821955fdac8d7a752f4495799f18921ed1d9ec92e95754d34b4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GlobeSurfaceTileProvider.createTileUniformMap: FunctionTooLong \u2014 createTileUniformMap runs 254 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 154 over it, 2.54\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1909}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f97d054fada750b6ff37cc385fd173c09a471fa918d07f4ac69b24cb31b0e9e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Cesium3DTile.js: FileTooLong \u2014 1243 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 743 over it, 2.49\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e81d5a0628c7c0617d75c34a47b1392d4e300e83a53a96554417756c48bb67e4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Cesium3DTilesInspector.Cesium3DTilesInspector: FunctionTooLong \u2014 Cesium3DTilesInspector runs 247 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 147 over it, 2.47\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspector.js"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"039800dea5f848a653655a3e0787c370a34b275638ea975ba9eda72d800d15f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/Cesium3DTilesTerrainGeometryProcessor.js: FileTooLong \u2014 1234 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 734 over it, 2.47\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e82dc45fd29fe4fb9965e8fe68b5eb51c829e13dd7e2ff3165acd0bc9fee552"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Vector3DTileContent.initialize: FunctionTooLong \u2014 initialize runs 246 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 146 over it, 2.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileContent.js"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fe04ae045028e831db88cab1211f5d8cd6fe9012c29f3cd6cbf3ca9efb05428"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/BillboardCollection.js: FileTooLong \u2014 1219 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 719 over it, 2.44\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ec08b49e00922e698f9c6b3a6a65a6a0135c8d1d22161d3a570329c359c4098"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/PolylineCollection.js: FileTooLong \u2014 1218 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 718 over it, 2.44\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"099538431b638db23ecfe3eaf76c29259512b6b99b0f10d8e48ead2bd7686d19"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: SandcastleEditor.SandcastleEditor: FunctionTooLong \u2014 SandcastleEditor runs 239 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 139 over it, 2.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/SandcastleEditor.tsx"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e7c482642f437ba079e08f68bd56b269c4db8157340260ab1b3637d14f20b4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/GaussianSplatPrimitive.js: FileTooLong \u2014 1173 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 673 over it, 2.35\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GaussianSplatPrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"784b8981036e60769db0a77188f048fe9308f56d8369d98d569723ce20181272"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Workers/decodeI3S.js: FileTooLong \u2014 1145 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 645 over it, 2.29\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a332e0479b68f6fc01da9f5842b432e38e961446b25e8110874125262ffaab"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Context.Context: FunctionTooLong \u2014 Context runs 229 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 129 over it, 2.29\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Context.js"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f537957a64f4f245eb7959208036b129ec3c3231f04a5c431650940c341f51"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/GroundPolylineGeometry.js: FileTooLong \u2014 1108 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 608 over it, 2.22\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":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6bf55212ac0d6680b5f7cf82ecb625d0acd3f3d45d4000b4b015a9543777f47"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createVectorTilePolygons.createVectorTilePolygons: FunctionTooLong \u2014 createVectorTilePolygons runs 220 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 120 over it, 2.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTilePolygons.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fb53ce97b1d2f6e1dee5680dd9911b98ef9724dae5d212a4cc217f02c58942b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Scene.executeCommands: FunctionTooLong \u2014 executeCommands runs 216 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 116 over it, 2.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":2779}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0932d791a98495b75e9a13e45b339b684a52fe8a71e83294f2ca6fb530980c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Cesium3DTileset.Cesium3DTileset: FunctionTooLong \u2014 Cesium3DTileset runs 215 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 115 over it, 2.15\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8010c0c6a974621d624630b5cf959dc434ff09a56708b3c835984ec3cbbb024"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeometryPipeline.splitLongitudePolyline: FunctionTooLong \u2014 splitLongitudePolyline runs 213 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 113 over it, 2.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2933}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f600439bc0a001a19169c7a4ce12b9bf5fa2f4b7008f991400f3d77e87e678"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ChatPanel: ClassTooLong \u2014 848 significant lines (blank, comment-only and punctuation-only lines excluded), 6 methods. The bar is 400 significant lines; this is 448 over it, 2.12\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":"packages/sandcastle/src/copilot/ChatPanel.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d573b853a4c4423c6ccf42191840d8fa58642fcefca39869395fb3880b0ba0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Picking.js: FileTooLong \u2014 1059 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 559 over it, 2.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Picking.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6496753a841307acbe8de60ea3b478462650d8e97c46368ca235ef59acbfdee6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PolylineCollection.createVertexArrays: FunctionTooLong \u2014 createVertexArrays runs 208 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 108 over it, 2.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc01e899c4cada7056e05f54d992f05e2a028c3b03372053f998724016675085"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Matrix4: TooManyMethods \u2014 62 methods. The bar is 30 methods; this is 32 over it, 2.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix4.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"1380389b2d772a3df706586d2d2294ff0243cfafb2b10e3942ab68eb239b1548"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/RectangleGeometry.js: FileTooLong \u2014 1031 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 531 over it, 2.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b74c5455ef0b12a0f777e577d48e8904b0d5b919d8d88496f454c3490adec19"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/CorridorGeometry.js: FileTooLong \u2014 1022 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 522 over it, 2.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda2768bd6052f377f6354426412bde0eb7055fe9485c8d8e38c1076803d7ac9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Scene.Scene: FunctionTooLong \u2014 Scene runs 203 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 103 over it, 2.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe2e9845b253e3a864e5b916145f9900a1d53375a2a7cfbab0a825d874cb1648"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/PolygonGeometry.js: FileTooLong \u2014 1011 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 511 over it, 2.02\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b863182b7c3bf699d1b773dce3a3a475bca44b4ba80ea75d13520de5acb72d92"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: processVoxelProperties.processVoxelProperties: FunctionTooLong \u2014 processVoxelProperties runs 202 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 102 over it, 2.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/processVoxelProperties.js"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0a236d99ee7aee75962b91f6fa0877d1b357c89ce64d51d611e080364ff99cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CorridorOutlineGeometry.combine: FunctionTooLong \u2014 combine runs 199 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 99 over it, 1.99\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorOutlineGeometry.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d966d053661c13fc86cf940f0ecc13d5fbaf8304c69019d853ea6a7781c2225c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: EntityView.updateTransform: FunctionTooLong \u2014 updateTransform runs 199 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 99 over it, 1.99\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityView.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3750560b8b4c97e8331909a1e5aa45f5540e343a537ac524c86ab9003de1dea"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GalleryItemStore.useGalleryItemStore: FunctionTooLong \u2014 useGalleryItemStore runs 199 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 99 over it, 1.99\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Gallery/GalleryItemStore.ts"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e9ba1fd9a1b7f8c713ccb7a30cb96b1cf8ea6cbb6801b0430bd38f475e9e570"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: EntityCluster.createDeclutterCallback: FunctionTooLong \u2014 createDeclutterCallback runs 198 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 98 over it, 1.98\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityCluster.js"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"e97cad6c2d3fd572b1b6de3b48131e2a8183b8c1f7745e756849026a01105430"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CesiumInspector.CesiumInspector: FunctionTooLong \u2014 CesiumInspector runs 198 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 98 over it, 1.98\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/CesiumInspector/CesiumInspector.js"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b14477545f44eb365b35adc22cecefcba6185292740f7f813371ec6f8cb25de"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: renderBufferPolygonCollection.renderBufferPolygonCollection: FunctionTooLong \u2014 renderBufferPolygonCollection runs 197 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 97 over it, 1.97\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolygonCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b7396bee7465f81debc5247dee7d53ecb4dc6a18d41c92205046a544f11c4b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DataSources/PathVisualizer.js: FileTooLong \u2014 981 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 481 over it, 1.96\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":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e27f70fc5d302a3242fbfebe44565012fe016da20738135b111a5ff1ef3ebd85"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: TerrainFillMesh.visitRenderedTiles: FunctionTooLong \u2014 visitRenderedTiles runs 196 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 96 over it, 1.96\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd93ae93b61a43fd5ef112362608de215327826198cb8d08116b5871b2442085"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Renderer/UniformState.js: FileTooLong \u2014 977 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 477 over it, 1.95\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/UniformState.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fbe792aa3fd9a3f2fcd94fc72caae9da548a4e85066c7f8265e42865bb603e9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Viewer/Viewer.js: FileTooLong \u2014 975 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 475 over it, 1.95\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4271d06811a295bf0bf50aef105f606f2dfed2647f426dacf2fc9c774a626f29"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PointCloud.createResources: FunctionTooLong \u2014 createResources runs 195 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 95 over it, 1.95\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"5209adcdb5f6084ecc578dfda2cb399ca0e2352e66d8c7d1a2828b1e46ff73ad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/PointCloud.js: FileTooLong \u2014 970 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 470 over it, 1.94\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":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbb5361c0ac3b2d4b2ab9b08c216db60af76c3b9cf992fa0f103e86a4a0a8fe7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: EllipseGeometry.computeWallAttributes: FunctionTooLong \u2014 computeWallAttributes runs 194 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 94 over it, 1.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"773891aa9a8f01b8411bb886d02aab55d679000598b3c97d53c39b4cd80748ee"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: copilot/ChatPanel.tsx: FileTooLong \u2014 963 significant lines (blank, comment-only and punctuation-only lines excluded), about 88% of them inside a single declaration: ChatPanel (152-1302). The bar is 500 significant lines; this is 463 over it, 1.93\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ChatPanel.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e23859f00d4cae03adfe20b69c9b3faa9b1eb19380813bbc0f5786314096153"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Animation.Animation: FunctionTooLong \u2014 Animation runs 192 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 92 over it, 1.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/Animation.js"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e64922eec7ec38725b937eef373a454529686d84d36283f72951fc291d28181"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CesiumWidget.CesiumWidget: FunctionTooLong \u2014 CesiumWidget runs 190 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 90 over it, 1.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dac7f340b06182cef2ac036d1fe226b17eec0a736f052d11b2193cddae3ea8d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: EllipseGeometry.computeTopBottomAttributes: FunctionTooLong \u2014 computeTopBottomAttributes runs 189 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 89 over it, 1.89\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"58323e640fe69b46d7595060e4d1fe61f9a586f66e8a5bcbc2bb067e105575bc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Material.js: FileTooLong \u2014 933 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 433 over it, 1.87\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Material.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0438975b7ecfcd740c0af765753cb317d82c040b7488cc6a5c7b06f11f47ebb7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: TerrainFillMesh.propagateEdge: FunctionTooLong \u2014 propagateEdge runs 185 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 85 over it, 1.85\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7879fc738c20e286458faee7a6750d0765ab690363dd6b4d234eb5c0cef6e05"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DataSources/exportKml.js: FileTooLong \u2014 920 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 420 over it, 1.84\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5478f050a7726e0009c1f64e6ac0e144d41c8020e3b2ad2bafb35d737004d21f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Cesium3DTile.Cesium3DTile: FunctionTooLong \u2014 Cesium3DTile runs 184 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f192d9419a9aad27a19caef3139d55c884033c5c2ad15cbe41f2d66d1659ae"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: renderBufferPointCollection.renderBufferPointCollection: FunctionTooLong \u2014 renderBufferPointCollection runs 184 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPointCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"15510f137e4f1a9329268e7d2c0bac4037fc5b85545645f07a9dff7a11a02c22"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/QuadtreePrimitive.js: FileTooLong \u2014 912 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 412 over it, 1.82\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ead061964a4916a7e4077fafbc1ca29f952599831e11dfaf8bf2d93a263bc474"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: JulianDate.fromIso8601: MethodTooLong \u2014 fromIso8601 runs 182 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 82 over it, 1.82\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/JulianDate.js"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"509a36cb25a0f4a5a55da85e13c2471771fae6c3bae0c19b2e1a9f0b6155d63b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/VoxelPrimitive.js: FileTooLong \u2014 904 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 404 over it, 1.81\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelPrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"572edf68026795b5c5ed14155f1845b916b3f8108d89df40eb1c8012b0402722"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/EllipseGeometry.js: FileTooLong \u2014 897 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 397 over it, 1.79\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff40554e798176b8e3930691ef84315b9d3c4f9b68b615d1dbeadb2f6f11868"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processPolygon: FunctionTooLong \u2014 processPolygon runs 179 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 79 over it, 1.79\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":3836}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ab46a22415942a42884556d539abb7f3d72dfacbac644b1a3bc477febed4e4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CesiumTerrainProvider.createQuantizedMeshTerrainData: FunctionTooLong \u2014 createQuantizedMeshTerrainData runs 178 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 78 over it, 1.78\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1b2310b2452b1ebe1e92f937e4ae7026c18137202ee22a59b2d916a0309cd1c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeometryPipeline.splitLongitudeTriangles: FunctionTooLong \u2014 splitLongitudeTriangles runs 177 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 77 over it, 1.77\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2411}}}],"partialFingerprints":{"codehealthFindingId/v1":"3980a58159fc4c8b68233f509b1f6abda97ad75db2c5ced61ce60ce75023441e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CesiumTerrainProvider.parseMetadataSuccess: FunctionTooLong \u2014 parseMetadataSuccess runs 176 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 76 over it, 1.76\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5424eabb1691ab36df100ed418d39e55616283655b4b918f01128a9501472dd"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processLabel: FunctionTooLong \u2014 processLabel runs 176 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 76 over it, 1.76\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":3043}}}],"partialFingerprints":{"codehealthFindingId/v1":"4897eddb288b3d5adf4ff6712c5342471d5e5973102503334a86448ffcbf51b0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ./gulpfile.js: FileTooLong \u2014 865 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 365 over it, 1.73\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80453164c44f66bcd351a06f6d0f7c668f569d8c00530e85119ff13e31d491af"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Renderer/Context.js: FileTooLong \u2014 864 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 364 over it, 1.73\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Context.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf9bfc49e038002d13b74ca6e39c546564a8e4a8d21290ab34556bddeea6952"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/PolygonGeometryLibrary.js: FileTooLong \u2014 862 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 362 over it, 1.72\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometryLibrary.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c4f42ff49f87977d26de2f700d7562bb065b1096f3f5a3333f2fdef9207bd66"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VertexAIClient: ClassTooLong \u2014 685 significant lines (blank, comment-only and punctuation-only lines excluded), 22 methods. The bar is 400 significant lines; this is 285 over it, 1.71\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":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"13271eb7a1d2438f4db665569c914fdeadad44fb1a9f8c87676f4d15615d4529"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Matrix4.inverse: MethodTooLong \u2014 inverse runs 171 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 71 over it, 1.71\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix4.js"},"region":{"startLine":2678}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f42777c3a3205efc36580ab4e90b97fab98b2e47e8bfba1e19dd7c95909971"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processModel: FunctionTooLong \u2014 processModel runs 171 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 71 over it, 1.71\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":3246}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8c277fedbb3fdd3f49a742ac467c13a23a4d68d6b57d83f3052dae1714ea98"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: RenderState.RenderState: FunctionTooLong \u2014 RenderState runs 171 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 71 over it, 1.71\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"03260302df5b1458592a3acb21d27f4ed6d10d3211bb87e2fae2e0a2fc83d6c2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: I3dmLoader.createInstances: FunctionTooLong \u2014 createInstances runs 170 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 70 over it, 1.70\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/I3dmLoader.js"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"316ff4cf83a5b05380aed0776326d32dc960571d531048c6659e099bbd6e87cb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/Matrix3.js: FileTooLong \u2014 845 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: Matrix3 (39-1664). The bar is 500 significant lines; this is 345 over it, 1.69\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix3.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d5d8fdbe3c0096c190016f82d272ef97def51dcd611aacf02156ef5b7bc476b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BoundingSphere: ClassTooLong \u2014 672 significant lines (blank, comment-only and punctuation-only lines excluded), 32 methods. The bar is 400 significant lines; this is 272 over it, 1.68\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":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81ed266abbeba5aae7cbc10e768981de11f8d9a0b531077325d4a5ee3a8bb57"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeometryPipeline.splitLongitudeLines: FunctionTooLong \u2014 splitLongitudeLines runs 168 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 68 over it, 1.68\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2651}}}],"partialFingerprints":{"codehealthFindingId/v1":"e79824d37c7c1d923da6a8aa8a2daecd61fe71b539ab45dd51a570e5f2edeecc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: buildGallery.buildGalleryList: FunctionTooLong \u2014 buildGalleryList runs 168 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 68 over it, 1.68\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/scripts/buildGallery.js"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a7f0ae16282764d9b8715d7047ce43d36278621f4837228e415f35bd80c373"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: BaseLayerPickerViewModel.BaseLayerPickerViewModel: FunctionTooLong \u2014 BaseLayerPickerViewModel runs 168 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 68 over it, 1.68\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/BaseLayerPicker/BaseLayerPickerViewModel.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cec4f29f9aeb7a7e769624458f7a9084f14f3d61e5447fd8e3c0a9a177b534d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Vector3DTilePrimitive.js: FileTooLong \u2014 835 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 335 over it, 1.67\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTilePrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"102e8f9571ce489af6fee34ac36e827cf1c07380ad5a72f367deba4524ed9228"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processEllipse: FunctionTooLong \u2014 processEllipse runs 167 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 67 over it, 1.67\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":2675}}}],"partialFingerprints":{"codehealthFindingId/v1":"328a70d55954ee30cfa110eeaeb152365a4615ca7e9057ecb2db1799452f2d70"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Cesium3DTilesTerrainGeometryProcessor.addSkirtsToMesh: FunctionTooLong \u2014 addSkirtsToMesh runs 166 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 66 over it, 1.66\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6460d09dfe64190d4e31bc6a6f4e3ea3c939ea5add5d6cae179fe60861b73b4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processBillboard: FunctionTooLong \u2014 processBillboard runs 166 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 66 over it, 1.66\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":2022}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e26287ae1aee494e162b5de0a68bee77f7eb07c921c28cbb4ca7bc1d140f7f9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Model.Model: FunctionTooLong \u2014 Model runs 166 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 66 over it, 1.66\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"b764858079edac2daa86b553cd1e9e3fd739af0594dce410b73e34ffed0f9051"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/Resource.js: FileTooLong \u2014 826 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 326 over it, 1.65\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Resource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de78d08810f00f4fdd6ecc98b0f91324be60062fae72e31ea9c78af4ca3df8a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: AnimationViewModel.AnimationViewModel: FunctionTooLong \u2014 AnimationViewModel runs 164 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 64 over it, 1.64\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/AnimationViewModel.js"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"be029afc2fae9cbf5afa3a89a71e8d2325e8c1845270a5045c7d11d2f443dfa4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Matrix3: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix3.js"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"fab117ebcbca004e88290ecebda7f4493935be7609746b6a8339d08fe484201c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Cesium3DTilesInspector/Cesium3DTilesInspectorViewModel.js: FileTooLong \u2014 810 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 310 over it, 1.62\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspectorViewModel.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e1c3b0181fd2d71b15b3eb8c09c7f9402ea9dacf20dea7098c72f0dfbb6be76"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createElevationBandMaterial.createLayeredEntries: FunctionTooLong \u2014 createLayeredEntries runs 162 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/createElevationBandMaterial.js"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dfc68c6a1fc17ef90615e14f8c1f9545319c78b48b54ef65d8a56cc7089fe2e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Widget/CesiumWidget.js: FileTooLong \u2014 803 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 303 over it, 1.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d5df447d42453bdc294dbac3e6ad538c244f93d7bd2bf4405c6e92a46d37f8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/MaterialPipelineStage.js: FileTooLong \u2014 800 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 300 over it, 1.60\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":"packages/engine/Source/Scene/Model/MaterialPipelineStage.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"33ec9ec06a01a967d8fae67eca05ac6e7174d26a3c501f7c3c833df3ca4e6f36"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: RectangleGeometry.constructRectangle: FunctionTooLong \u2014 constructRectangle runs 159 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 59 over it, 1.59\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2f6a04d53b6e124f2843fb4a11bcf772d13d5489f38e5b9f427223dc5fe9da"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createVectorTileClampedPolylines.createVectorTileClampedPolylines: FunctionTooLong \u2014 createVectorTileClampedPolylines runs 159 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 59 over it, 1.59\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTileClampedPolylines.js"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"0845c37121b2c962a2cda86f30b9009f3c12792c0f98d6f65eef4775a05fe0ac"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/ClassificationPrimitive.js: FileTooLong \u2014 793 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 293 over it, 1.59\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClassificationPrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb37e60c584f6beea99687a1de96dbeb7c9872708d98c409fc6f7d05ce4e74e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/SceneTransitioner.js: FileTooLong \u2014 792 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 292 over it, 1.58\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/SceneTransitioner.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b038ea8a210c43333cfb9c420c94ecad5913f1842e304d613e9af607c4585a4f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Simon1994PlanetaryPositions.computeSimonMoon: FunctionTooLong \u2014 computeSimonMoon runs 156 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 56 over it, 1.56\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Simon1994PlanetaryPositions.js"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d74f9bab001a9d047bafda56fd34cc14650c39c172ac7639c2fbe264db6a04a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: NavigationHelpButton.NavigationHelpButton: FunctionTooLong \u2014 NavigationHelpButton runs 156 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 56 over it, 1.56\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/NavigationHelpButton/NavigationHelpButton.js"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd5e743cee0d753601d856c33c56b2b2c514f9ab9a93953f5a2a4c18f76d232"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Animation/Animation.js: FileTooLong \u2014 776 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 276 over it, 1.55\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/Animation.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0195c42619a8e3361847504dd8cdb5e23c583d0548a7c09765a25b8d613ac10"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/CesiumTerrainProvider.js: FileTooLong \u2014 773 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 273 over it, 1.55\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b3b218ffc0e5dddc9e1bc96c0069cc61825f38859fb96f99a94858b68daafb8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Label.js: FileTooLong \u2014 769 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 269 over it, 1.54\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f0a4932b3118e557b774eb26f0b8c6e0ea41f1d09e663a563e321fc0df2d28"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Cartesian3: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Cartesian3.js"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"f915aa851d454bbdeef7d508b365ff2b322af7e0a2400f00d07df12cc9710192"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: QuadtreePrimitive.visitTile: FunctionTooLong \u2014 visitTile runs 153 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 53 over it, 1.53\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"63309786ab29f14aa8fb82e13dd126b25ae696f76a6a81fd325a03ca1cb54ab4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/ImageryLayer.js: FileTooLong \u2014 762 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 262 over it, 1.52\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a545b7cbb641b7f16a70b4958fe7a26e0e5f8824b5af659f95a08a7797d59452"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: KmlDataSource.processNetworkLink: FunctionTooLong \u2014 processNetworkLink runs 152 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 52 over it, 1.52\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2998}}}],"partialFingerprints":{"codehealthFindingId/v1":"b257f860976aea0b73909e55f511f410967f56b40a4ee4ad27c785dece8cebd7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/GlobeTranslucencyState.js: FileTooLong \u2014 758 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 258 over it, 1.52\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeTranslucencyState.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d3097641186eb222910d3597255d4fadb826cf159ea099448f8f8b439ab2db2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processEllipsoid: FunctionTooLong \u2014 processEllipsoid runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":2868}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2d510ae1725b5ab20ff9d914e33a838016c0e881217ed730afa6b2ab145166"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processRectangle: FunctionTooLong \u2014 processRectangle runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":4303}}}],"partialFingerprints":{"codehealthFindingId/v1":"e23d5683197dcdfc23435bc7760510941c169db26d2fe2b02a6b4395fee19c7b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: QuadtreePrimitive.visitVisibleChildrenNearToFar: FunctionTooLong \u2014 visitVisibleChildrenNearToFar runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca48c9f2acd96ba41046baa8d82f4c4ca66fcea194eb22bf612106d8f920d59f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processCorridor: FunctionTooLong \u2014 processCorridor runs 148 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 48 over it, 1.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":2317}}}],"partialFingerprints":{"codehealthFindingId/v1":"02dcc8aff80225cf4793b0c9f93be397212bc27a2fb47ceefcc3158c2f9f2348"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ScreenSpaceCameraController.pan3D: FunctionTooLong \u2014 pan3D runs 148 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 48 over it, 1.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2104}}}],"partialFingerprints":{"codehealthFindingId/v1":"cca7e6c3528fc9de3f533d92211c730d304d1834d79fb3a8e7c16992c4f9868e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/OrientedBoundingBox.js: FileTooLong \u2014 739 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 239 over it, 1.48\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrientedBoundingBox.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1530c2559e45d3bb02da0ea5738b8c992e3f0e815757d6e41f02c020f2462eb0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: geometry-and-appearances-dev/main.js: FileTooLong \u2014 735 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 235 over it, 1.47\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/geometry-and-appearances-dev/main.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa5d415922ec92c5c9567d2185881c197fd7a98ec9425ace94f742f37cbb8e4c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ScreenSpaceCameraController.rotateCVOnTerrain: FunctionTooLong \u2014 rotateCVOnTerrain runs 147 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 47 over it, 1.47\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda4231c4b004c6ba593260d66d1272ce0181ec32b30f0a8e1c91894d28b4768"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ModelReader: ClassTooLong \u2014 584 significant lines (blank, comment-only and punctuation-only lines excluded), 24 methods. The bar is 400 significant lines; this is 184 over it, 1.46\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":"packages/engine/Source/Scene/Model/ModelReader.js"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c625f321a76900a08cba25ce2ec2e96c08241079d5701433b7fd8dc86815465"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CesiumViewer.main: FunctionTooLong \u2014 main runs 146 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 46 over it, 1.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Apps/CesiumViewer/CesiumViewer.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d82acf10212856b689ede7cdfbe0a779eddbbf29634813f31801dfc0c8de29"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/BoundingSphere.js: FileTooLong \u2014 725 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: BoundingSphere (29-1441). The bar is 500 significant lines; this is 225 over it, 1.45\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"20abace1ba5df40f214f817caef8232f743d9cfd3097c5cb5bf30fbbc7866dd3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Texture.Texture: FunctionTooLong \u2014 Texture runs 144 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 44 over it, 1.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed6e9452b053b5945b796b69dd889d7987b7f349c4495f0b709526bfdc571869"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: clients/VertexAIClient.ts: FileTooLong \u2014 715 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: VertexAIClient (44-1015). The bar is 500 significant lines; this is 215 over it, 1.43\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"599bf6a7a2d8da5f05f9f7080ee4f3d9c4da3f62fe9197ee860e6b6062c558a3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Cesium3DTileBatchTable.js: FileTooLong \u2014 712 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 212 over it, 1.42\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileBatchTable.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"45bb9e0cddcb5b0d9631dbabb37b87f7f69ee6a17f7f3cdcbb85406e35117abf"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CorridorGeometry.extrudedAttributes: FunctionTooLong \u2014 extrudedAttributes runs 142 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 42 over it, 1.42\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f73c6fd14e975d5549f73c0880b995c999cfbce3abd1a8564f9aa6a3641d68"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: SettingsModal.SettingsModal: FunctionTooLong \u2014 SettingsModal runs 142 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 42 over it, 1.42\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/SettingsModal.tsx"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"b95389b9d7217733186017c9b8e19d8c9bd6d0b417e488d409040f42309df453"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: VoxelInspector.VoxelInspector: FunctionTooLong \u2014 VoxelInspector runs 141 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/VoxelInspector/VoxelInspector.js"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ea2b11325cff3efd690f64b4d4d0cfbd00fe3f07118ed8602ca49ee3efc46df"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Cesium3DTilesTerrainGeometryProcessor.clipTileFromQuadrant: FunctionTooLong \u2014 clipTileFromQuadrant runs 140 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 40 over it, 1.40\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"f543f436c33aa8dec2c282e384023bc6958ff61ee5263242d48aa1d9c07a5141"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/VoxelEllipsoidShape.js: FileTooLong \u2014 696 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 196 over it, 1.39\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelEllipsoidShape.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e75248aaed9df58b88ac26c2cd0327934e34be798008b5e7df6eb79388b551"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Camera.rectangleCameraPosition3D: FunctionTooLong \u2014 rectangleCameraPosition3D runs 139 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 39 over it, 1.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":2584}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ba6dfdd658bb54924d165f70eb5d9e64ef11cd4631a5b55d83eac0388da1ad5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: VoxelRenderResources.VoxelRenderResources: FunctionTooLong \u2014 VoxelRenderResources runs 139 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 39 over it, 1.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelRenderResources.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"e341f1150fba6df4668fd41a0c9b9431fdbf8d1526b05d0a6e9feb20994b2e07"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Timeline/Timeline.js: FileTooLong \u2014 686 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 186 over it, 1.37\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/Timeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9385a6db3d8cea7641bac05d4f14af8d3c56107c686fae66dd1a8f1ca2fed4b2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeometryVisualizer.GeometryVisualizer: FunctionTooLong \u2014 GeometryVisualizer runs 135 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 35 over it, 1.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeometryVisualizer.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"f054f73892a2cb4ff2ffc3b2409e8fee739b952d1860d6610e0e814847f2a44a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/InstancingPipelineStage.js: FileTooLong \u2014 670 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 170 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/InstancingPipelineStage.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3867a0cb2b348e1a8fd0b7695b8f3971fc22d12dea23c76b16b029a9861f88be"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/Billboard.js: FileTooLong \u2014 668 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 168 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Billboard.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"464253bb50c1eb1bbc6ef5ae0c8bb8466057e1f953fe76188894f1fd869c4fbb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Matrix2: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix2.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd800bd1b5855f0652ece6aa778a4a4bb5eef19793663180384ff2c5430c339d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ScreenSpaceCameraController.tilt3DOnTerrain: FunctionTooLong \u2014 tilt3DOnTerrain runs 133 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":2550}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6f3bf3b4257b55f00b84f895f653f1b1fd1eeec65f3b255123b94d88e975e50"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/PointPrimitiveCollection.js: FileTooLong \u2014 662 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 162 over it, 1.32\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointPrimitiveCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd4d3178981d2951009c4cd30804fca3a0fdfda7869999d572a5b0c50d66d716"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PolylineCollection.createCommandLists: FunctionTooLong \u2014 createCommandLists runs 132 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 32 over it, 1.32\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e040e4471ce4cac195e863e8887f4791fe0ef56aa8445ed289a8946b538bac5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: TerrainFillMesh.addEdgeMesh: FunctionTooLong \u2014 addEdgeMesh runs 132 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 32 over it, 1.32\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"766059bc3a741475ff4ee5079cddb53bf5583d36904edd681938c492eccc43f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: TranslucentTileClassification.updateResources: FunctionTooLong \u2014 updateResources runs 132 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 32 over it, 1.32\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TranslucentTileClassification.js"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"e080c4f34c004d275a74d9cf29e64c629e98cabae59c78fc367e50841969577a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: main.createButtons: FunctionTooLong \u2014 createButtons runs 131 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 31 over it, 1.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/materials/main.js"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"51079c6246c1dce2877f48e88b4c0569db13c8f6c997673c45a3239ef3f7b7cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/EdgeVisibilityPipelineStage.js: FileTooLong \u2014 652 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 152 over it, 1.30\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5aee5471fce15f738b1d3eeb34d9160f235c0fdf7add9e96d3464f417d0bfc0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/VoxelTraversal.js: FileTooLong \u2014 649 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 149 over it, 1.30\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelTraversal.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3690cb3094a5f149ff566abe9455ec5a4fa5231b6598e4d9d153ae38ccaf565e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: VoxelInspector/VoxelInspectorViewModel.js: FileTooLong \u2014 649 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: VoxelInspectorViewModel (54-760). The bar is 500 significant lines; this is 149 over it, 1.30\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/VoxelInspector/VoxelInspectorViewModel.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"284643ef871b9c6c2822f6611216b81acd7fd5fb5a10610202bef32ae6877167"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CoplanarPolygonGeometry.createGeometryFromPolygon: FunctionTooLong \u2014 createGeometryFromPolygon runs 128 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CoplanarPolygonGeometry.js"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a91ed047adb722df04483260d0bcda873c88296c17506fa5f8a7374f12737d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: LabelCollection.repositionAllGlyphs: FunctionTooLong \u2014 repositionAllGlyphs runs 128 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/LabelCollection.js"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"b965639d85be4d3997b18a7c8e67a4b26be85d33304cf815b58b519f525e5bd4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: main.buildCategoryPanel: FunctionTooLong \u2014 buildCategoryPanel runs 128 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/aec-tileset-metadata-filtering/main.js"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab1414257981e27902aec31d480c31c5184a5d71ca542552abea10cf0ba08cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/VectorPipeline.js: FileTooLong \u2014 639 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units), about 65% of them inside a single declaration: VectorPipeline (136-826). The bar is 500 significant lines; this is 139 over it, 1.28\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VectorPipeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43ea1999895e24453a7747aa28e4756d5312f09ccf013aa428e4ec423a5ff179"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/GlobeSurfaceTile.js: FileTooLong \u2014 634 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 134 over it, 1.27\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTile.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94743b7299d8c4d501f4d5fa7f6b859f376c342023b62533a212eed8b0826aef"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Cartesian4: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Cartesian4.js"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8f83bd83997445a41fbbded230e37dd2a3911d67e1a9014e99c54dd57542c16"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: LabelCollection.rebindAllGlyphs: FunctionTooLong \u2014 rebindAllGlyphs runs 126 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 26 over it, 1.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/LabelCollection.js"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"c07b53560034c97fa1ff05e4c830c5045db0496c5dc736941884a5ec5a9bfd11"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VoxelInspectorViewModel: ClassTooLong \u2014 503 significant lines (blank, comment-only and punctuation-only lines excluded), 13 methods. The bar is 400 significant lines; this is 103 over it, 1.26\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":"packages/widgets/Source/VoxelInspector/VoxelInspectorViewModel.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2160f83593c9ffa003769f375607d1a9b1ed94e3f8ff63a4742eb9ad0819627d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/JulianDate.js: FileTooLong \u2014 626 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units), about 77% of them inside a single declaration: JulianDate (199-1192). The bar is 500 significant lines; this is 126 over it, 1.25\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/JulianDate.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"47bf3dd1a62e86a2089459c4c90df48ea9d40359ea13377b8779d663e16338de"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ShadowMap.ShadowMap: FunctionTooLong \u2014 ShadowMap runs 125 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"264734b803321c6ec3189ae4d26dc1e860abdc85fb5d2384b64356e308bf2c35"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: BaseLayerPicker.BaseLayerPicker: FunctionTooLong \u2014 BaseLayerPicker runs 125 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/BaseLayerPicker/BaseLayerPicker.js"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e428f439b6b62722312cee9449e6dd1463b1676d2d0f24c0a494edb7aad573d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Renderer/Texture.js: FileTooLong \u2014 623 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 123 over it, 1.25\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f519c9361d7e6d8de42aa492f9ff4c6890f1b06d0c0e5acc0d47a57917be273"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/ScreenSpaceEventHandler.js: FileTooLong \u2014 622 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 122 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/ScreenSpaceEventHandler.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b795880bad8540416174ffb4d5c10e362f4ce26ebfcf462bd8260c28b7e04632"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/buildVectorGltfFromMVT.js: FileTooLong \u2014 622 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units), about 79% of them inside a single declaration: buildVectorGltfFromMVT (80-842). The bar is 500 significant lines; this is 122 over it, 1.24\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/buildVectorGltfFromMVT.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5662e7c2b1ed7c7c09017830bc57b9b12d6831d03c02e566f90a7b9b7534e303"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Texture3D.Texture3D: FunctionTooLong \u2014 Texture3D runs 124 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 24 over it, 1.24\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture3D.js"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"22824636851f9c3dfe3a73ffafe123e656e3abf96f49f8bd7b38b6f4873b6ee9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/MetadataClassProperty.js: FileTooLong \u2014 618 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 118 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataClassProperty.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d134876bb5c03442822691d0980d86e90b0f2ee92bb5988ea1e7b431f4f0925"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Cartesian2: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Cartesian2.js"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"383185ea60a5747f88511740c068abc3621caf81ea4d550d5ab2ba6e1156848d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Geometry3DTileContent.initialize: FunctionTooLong \u2014 initialize runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Geometry3DTileContent.js"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"84da575edd6a30133cefa2b1c0975684baa039249f37742d5b4dc5bf8896878f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/App.tsx: FileTooLong \u2014 614 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 114 over it, 1.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a837a7ee86e3a89472a0d552d6f35e0c243bbfc657759e92ca75d709c7ee5a7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: buildVectorGltfFromMVT: ClassTooLong \u2014 489 significant lines (blank, comment-only and punctuation-only lines excluded), 9 methods. The bar is 400 significant lines; this is 89 over it, 1.22\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":"packages/engine/Source/Scene/buildVectorGltfFromMVT.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2b77edb8b0eb1b18e74651234e42d4fa630516b4a7ef0670526297d5f7a0b4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VertexAIClient.geminiStreamRequest: MethodTooLong \u2014 geminiStreamRequest runs 122 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"53609564415c409f527dfedb16149a34463b0f8a98895971b0d09a563afaebb2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DataSources/EntityCluster.js: FileTooLong \u2014 605 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 105 over it, 1.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EntityCluster.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0936a8aa5d2162a2012e5796c1f49169508935713bc7cfb8fe9c191088f4df2f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DataSources/GpxDataSource.js: FileTooLong \u2014 605 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 105 over it, 1.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GpxDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5bcdf9a6376bafcdbae4344e5062b4bf22a3f953fa6d9da36f1638281edc5e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: UniformState.UniformState: FunctionTooLong \u2014 UniformState runs 121 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/UniformState.js"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d4755ac9f50d2f74b8eb5d3b8412291d2c914ce8d355ed89813cca70bd27cb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/ModelReader.js: FileTooLong \u2014 604 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: ModelReader (48-1280). The bar is 500 significant lines; this is 104 over it, 1.21\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelReader.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"262af1c0ef1085319ab80ab14449f1fbed938c816ef87d02603c02af9e09b183"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ImageryPipelineStage: ClassTooLong \u2014 480 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 80 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ImageryPipelineStage.js"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5553e74bbaa836f7fbff90553e2e4f23d36470f57ed188b3b8e44980d5082b5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createVectorTileGeometries.createVectorTileGeometries: FunctionTooLong \u2014 createVectorTileGeometries runs 120 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTileGeometries.js"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b6a55781898caa9b0d2fd7b6306cf758f6a057260647346c7751ad43f44823"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: 3d-tiles-nga-gpm-visualization/main.js: FileTooLong \u2014 599 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 99 over it, 1.20\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-nga-gpm-visualization/main.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d3d707bdf3086fb8ca851fd74e7d886726e6781c283c2b03849a07a2bb2842"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/TimeIntervalCollection.js: FileTooLong \u2014 595 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 95 over it, 1.19\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd26816b7cb3d38516ae80734689afc7d3b596d27b2b369b34d23c9c16842ad"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processCylinder: FunctionTooLong \u2014 processCylinder runs 119 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":2489}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c97e3e1b2e441de48d83c460639e5ebd81a363587369795eb0b5c024deb66e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Rectangle: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded), 29 methods. The bar is 400 significant lines; this is 74 over it, 1.19\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Rectangle.js"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"945fbe3aee77f999adf11368e2e062065385e8b477b64c493665371188db20c2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processPositionProperty: FunctionTooLong \u2014 processPositionProperty runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"11a04c4d28b71ca0d662e96594b0f7bf175cf28af63d21bf72536ce813f0308f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PathVisualizer.subSampleSampledProperty: FunctionTooLong \u2014 subSampleSampledProperty runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"693ef6ecaf86ab6db7ccdf1874d7c4dff9d0f5070c7bcfb567be1140b1cfac68"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ClassificationPrimitive.createShaderProgram: FunctionTooLong \u2014 createShaderProgram runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClassificationPrimitive.js"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"82955582cfb467a9962908975f64e0fae10a38a1874b7152bd5e85a7ca5815e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: transcodeKTX2.transcodeCompressed: FunctionTooLong \u2014 transcodeCompressed runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/transcodeKTX2.js"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d58f19c45043b87cdede4a8c94c84dad400287ed04ac46604ff50f76d08ce60"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/ShadowVolumeAppearance.js: FileTooLong \u2014 588 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 88 over it, 1.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowVolumeAppearance.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f945945d4442824b42e6bf97da1ca55c18c655fa1ea6df1bb67cfcebcd6717"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/OIT.js: FileTooLong \u2014 586 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 86 over it, 1.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/OIT.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dadb66e07fbbea364faae5d418df35d3a6b4d45bde2984de53d8844c66d3db0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AutomaticUniforms: ClassTooLong \u2014 468 significant lines (blank, comment-only and punctuation-only lines excluded), 2 methods. The bar is 400 significant lines; this is 68 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/AutomaticUniforms.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b8581ee8b45809d8f32c6d9655790b85cc5cabdf6bb360560684cc62aa13f90"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: createVectorTilePolylines.createVectorTilePolylines: FunctionTooLong \u2014 createVectorTilePolylines runs 117 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVectorTilePolylines.js"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f6f80da6684a0955cc15dd489f997830ec19627d9e643df0634bd89be87a14"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: main.loadStHelens: FunctionTooLong \u2014 loadStHelens runs 117 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/terrain-clipping-planes/main.js"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59650d738ac6b3dc047ae9eb90d8d68128481895e39d933b87838a451bc5c2d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Color: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Color.js"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"f056f3b4fcaa05bf0036a2a5957b2a4f8c4b79031bc2ae3fadec3bfeb7cbe6cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/MetadataPipelineStage.js: FileTooLong \u2014 583 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 83 over it, 1.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/MetadataPipelineStage.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a61a361b9f2aee0649390203567a6b4937852d6d5a6eb569ed77858a21f63e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: exportKml.createTracks: FunctionTooLong \u2014 createTracks runs 116 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee2da4da19169990cfeb9932071433a7797650f7449f5c1b85ff5989035191e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: QuadtreePrimitive.updateHeights: FunctionTooLong \u2014 updateHeights runs 116 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35df9d1c2bb10c3fa72eb05cff7dc459620572b67906f9b91ae1b02f5edf5d5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DataSources/GeoJsonDataSource.js: FileTooLong \u2014 572 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 72 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e363c1a0be7ec663c42fc9a87b90fdc531fc37db2cd30933266a2e2eace02a41"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeometryPipeline.computeTriangleAttributes: FunctionTooLong \u2014 computeTriangleAttributes runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":2168}}}],"partialFingerprints":{"codehealthFindingId/v1":"1706ad3fd17fb69de88c70d661fddc30747ee21fc0c5fdfb26178084f99183e3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Framebuffer.Framebuffer: FunctionTooLong \u2014 Framebuffer runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Framebuffer.js"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f7b0f2e1f4bbc8589b825caa574709b978103a6a375ccc75f41e0c7b93c500"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: MetadataTableProperty.MetadataTableProperty: FunctionTooLong \u2014 MetadataTableProperty runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataTableProperty.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"e81c1e97d5e3388f34f3ec9b35167ed0dfc43c12fad9b68c0d83a4c6c1b88609"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Scene.updateAndClearFramebuffers: FunctionTooLong \u2014 updateAndClearFramebuffers runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3963}}}],"partialFingerprints":{"codehealthFindingId/v1":"247c33009a18b7ce6cfe89d92c4bef231f61a04e1873d85edda9a35d07f6818e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GlobeSurfaceTileProvider.updateTileBoundingRegion: FunctionTooLong \u2014 updateTileBoundingRegion runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"653cb34293ecf0ad1bda933c71ae9d9a62a15b50068e1a20a4eb9d3fdc59a55a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GltfLoader.loadPrimitive: FunctionTooLong \u2014 loadPrimitive runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":2311}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ad83623ff8df10c1cafb54572e617c7fa7d3b544c1510f3c4eb4e32267eb2a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: EdgeVisibilityPipelineStage.extractVisibleEdges: FunctionTooLong \u2014 extractVisibleEdges runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/EdgeVisibilityPipelineStage.js"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"32a807f25c449fc9d4f2defd85bb32ddf4e73d8f81d6e544d29b3f5f82cf7051"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: decodeI3S.decodeDracoAttribute: FunctionTooLong \u2014 decodeDracoAttribute runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1204}}}],"partialFingerprints":{"codehealthFindingId/v1":"211ab9ac20261c7d792b3c7fc538bc40fc2d5a84322e70ec259f5ff4fdd2def6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeocoderViewModel.GeocoderViewModel: FunctionTooLong \u2014 GeocoderViewModel runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Geocoder/GeocoderViewModel.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6f96b9f8f16d05bc3b66a0292936abb66b4cb705fff7a7ba1f83e2bfa5d9ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Renderer/RenderState.js: FileTooLong \u2014 562 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 62 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd5d6c74ea9fd9210202701b0b12232e18eb0913181f9a6189f0c7d0c70eab93"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/ModelDrawCommand.js: FileTooLong \u2014 561 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 61 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelDrawCommand.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1b6b7cf7b659398bf63c83129c11f64244d42bfb9d2663f10feed2706616e8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/PolylineVolumeGeometryLibrary.js: FileTooLong \u2014 561 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 61 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineVolumeGeometryLibrary.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a8194a326497e0e63b0f52d955c3e54f3b5cbe18ef81b110780681e6d51e54"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/PrimitivePipeline.js: FileTooLong \u2014 560 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 60 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cec14d188056eee7041d7c0d465f92282c78383fdd5305242156623e732dea04"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processPolyline: FunctionTooLong \u2014 processPolyline runs 112 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":4053}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a59f3283f1992c55e782b6e8fd06c1b05dd5653ffa121aaa9cf41a84d2b37dc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: KmlDataSource.processGroundOverlay: FunctionTooLong \u2014 processGroundOverlay runs 112 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2619}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ddb8b0cc279a03c3af07ef6b73ab2cc2d8d84bcb3d025eb47ed8b02d5807942"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: shadows-dev/main.js: FileTooLong \u2014 556 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 56 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/shadows-dev/main.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8344a45d534513d7174c764463581da1a03291538e8878ea5aa4a228fdea056"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PolylineVolumeGeometry.computeAttributes: FunctionTooLong \u2014 computeAttributes runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineVolumeGeometry.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"f57dae57463a0b8f33848238279012c1d378f11d19b387bdd834a5599accf9bc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Scene.execute2DViewportCommands: FunctionTooLong \u2014 execute2DViewportCommands runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":3469}}}],"partialFingerprints":{"codehealthFindingId/v1":"e839cb31ea2719c5047048b0017a688591b2ea88723651cd78a3c4de648a64e3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CubeMap.CubeMap: FunctionTooLong \u2014 CubeMap runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/CubeMap.js"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"9daa9a0e7d0d4673c342eda5abcbf4d67d8a585a1f5914fb8cb0a90fad43c414"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: pickModel.pickModel: FunctionTooLong \u2014 pickModel runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/pickModel.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fb4aa9809a1fb2019170626af0c3c2bb9f06b04a286e4afecd28f27ab7b9038"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/HeightmapTerrainData.js: FileTooLong \u2014 548 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 48 over it, 1.10\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/HeightmapTerrainData.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc1ffa6183b9d191627d8d390fe5e11f815e072092dd737235e080be8d84c69"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/Color.js: FileTooLong \u2014 547 significant lines (blank, comment-only and punctuation-only lines excluded), about 68% of them inside a single declaration: Color (34-950). The bar is 500 significant lines; this is 47 over it, 1.09\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Color.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a64dd899cdfe2b150fc827e4f6479c349d3ecbe3a9b33144116a31672d7bace"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DiffMatcher: ClassTooLong \u2014 437 significant lines (blank, comment-only and punctuation-only lines excluded), 14 methods. The bar is 400 significant lines; this is 37 over it, 1.09\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":"packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ecd71202b445227a1fb0b2f954de4d21b3c7e002a03b6da0f1c459270c4d55"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BoundingSphere.fromEncodedCartesianVertices: MethodTooLong \u2014 fromEncodedCartesianVertices runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9fdfc9245fd016f9c58681498c3b0514194c1525de5892a08982d839f22f0e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Cesium3DTilesTerrainData.upsampleMesh: FunctionTooLong \u2014 upsampleMesh runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainData.js"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"04303449ff283dbffd3cef980df5285bd4bf443f548ba3ad38338dc8d418bd9d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Cartesian3: ClassTooLong \u2014 434 significant lines (blank, comment-only and punctuation-only lines excluded), 46 methods. The bar is 400 significant lines; this is 34 over it, 1.09\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":"packages/core/Source/Cartesian3.js"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"5762f0a4529bb1faa26e52ab1e02fe20ef5206de1ad2f2479c8eddfb59c61b7e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/I3dmLoader.js: FileTooLong \u2014 541 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 41 over it, 1.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/I3dmLoader.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"694d7c7add16b86a5aba400620f4997a67a67802dbdf8eaedcfa103e741bdeb2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/BoxGeometry.js: FileTooLong \u2014 540 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 40 over it, 1.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoxGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a64f99129929dc1272c5efade4831917d770cadb79ebe6bc5b4dd975f9628a1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BoundingSphere.fromVertices: MethodTooLong \u2014 fromVertices runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"978cff045dab65a26d8c46da9e104d36bd8b7562dfdd2a960d8f88a95e2e6d44"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: KmlDataSource.getNetworkLinkUpdateCallback: FunctionTooLong \u2014 getNetworkLinkUpdateCallback runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":3991}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87526ca29d172662aceefd1e54af3a41c1ab6d31019e71bd22576991cd15d5b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GaussianSplatPrimitive.processGeneratedSplatTextureData: FunctionTooLong \u2014 processGeneratedSplatTextureData runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GaussianSplatPrimitive.js"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0ac7f64d33d8067d76686859a508a484a2288e249433cc15cc66150307da81a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeoJsonLoader.createLinesPrimitive: FunctionTooLong \u2014 createLinesPrimitive runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/GeoJsonLoader.js"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf2bbe5e811aeba1dd3884f1e8683ba6a01d4e338140f7e11dad6fcfa46654fb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/CloudCollection.js: FileTooLong \u2014 535 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 35 over it, 1.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CloudCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"02ed16774ddbad10b1be8424c096f9b2927c26ee711d03f7f730c6c2035c7350"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ShadowMap.computeCascades: FunctionTooLong \u2014 computeCascades runs 107 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0a7d6d75b04ed80e3124066290304157d6739af2104b0f1b37d7f1c0f71c8e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Vector3DTileClampedPolylines.finishVertexArray: FunctionTooLong \u2014 finishVertexArray runs 107 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileClampedPolylines.js"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b149b375f4156c8951f4d491f2ca8b700ef3baf9494d9e4b5e96b0abc30d384"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BoundingSphere: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf3d9d67c40bce5a9098eb2d4a647025db39eadeccdc42e872719f8215a09304"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/DynamicEnvironmentMapManager.js: FileTooLong \u2014 532 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 32 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/DynamicEnvironmentMapManager.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"354183d6cdc96d35b158bb782840ba5a80de581e9bc25ca9ea8ff943eccde022"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/I3SNode.js: FileTooLong \u2014 530 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 30 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SNode.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a099166b887c19e2db296be040d291208564f9d4a77945c60016515e2ac150a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/PostProcessStage.js: FileTooLong \u2014 529 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 29 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStage.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6200046eb3f496add35ab7e9de5c2bcfe7e1a1d8b3ef0d0dbdf787d84eac1e9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: RectangleOutlineGeometry.constructRectangle: FunctionTooLong \u2014 constructRectangle runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleOutlineGeometry.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a83f93b03daf447282e5d832081b66583472fd6c6906f98fcf5196e5999502c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: exportKml.recurseEntities: FunctionTooLong \u2014 recurseEntities runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68e25ab896bded5575d848c698d0d9914b6b99fb9e53d72ac106f59eff34b98"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Expression.parseCall: FunctionTooLong \u2014 parseCall runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"751ab8c840b5bbd408b77dd302f2cb9f85c60488e80e04178d655a5d49275f4d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GeoJsonPrimitive.constructor: MethodTooLong \u2014 constructor runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GeoJsonPrimitive.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db52c00eba13ae8f47b2641a262c5c5d32c0d66d8faae7f7c6cac3227b4988d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: WebMapServiceImageryProvider.WebMapServiceImageryProvider: FunctionTooLong \u2014 WebMapServiceImageryProvider runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/WebMapServiceImageryProvider.js"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4067a2489c7258c60e3b248434e73acc9aac0f44a039c4e0b9c380ca4625305"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: AppStandalone.AppStandalone: FunctionTooLong \u2014 AppStandalone runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Standalone/AppStandalone.tsx"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b2baecdde8319f9ab5700f86c102eff98af3ab19d763f4402e32439a0328d97"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/ModelSceneGraph.js: FileTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 20 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelSceneGraph.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80dc78ed32348beacc1563b91d0bdb35d131bee66a21bc87ef238c169a341c34"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Source/Quaternion.js: FileTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 20 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Quaternion.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"17cfe416feaa164558a36ba7b1f371f7129f4febba8796c26fd82fd7c1b430b1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: CzmlDataSource.processProperty: FunctionTooLong \u2014 processProperty runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad01c2a2459c6d98b4cee8e541fd9be8b033daee02cd231f23305555ca49449"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: Camera.updateMembers: FunctionTooLong \u2014 updateMembers runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f99d1f78778e1d5c9b25749243e7cbb8321f0030569814890320f1fd28af20"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ScreenSpaceCameraController.ScreenSpaceCameraController: FunctionTooLong \u2014 ScreenSpaceCameraController runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"b44e92a1ba3d7a66cf9510cbd9c8b5575743cfbee7232fd9a387dc4cafe6e08e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Scene/LabelCollection.js: FileTooLong \u2014 519 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 19 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/LabelCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd358ac6c8d5ec924624884c95322b531cdcd442bea98c5655b455b8d49f4943"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: BillboardCollection.BillboardCollection: FunctionTooLong \u2014 BillboardCollection runs 103 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf071693e413618aa2e353dc62aca5d5f6ae842035a2d37f73129820facdd8f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: PolygonGeometry.createGeometryFromPositionsExtruded: FunctionTooLong \u2014 createGeometryFromPositionsExtruded runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"07342e5e18802dbb95910367ae5bb13b78b564e750c6ac9ea036bf62e2634c38"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: KmlDataSource.processScreenOverlay: FunctionTooLong \u2014 processScreenOverlay runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":2468}}}],"partialFingerprints":{"codehealthFindingId/v1":"f15f4275589758e0f73dcaeae77e0d31a64de1c709924fac9ee98aca8504fd81"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: main.createButtons: FunctionTooLong \u2014 createButtons runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/ground-primitive-materials-dev/main.js"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd8f91947addfbd22c7cbf91227af505526111c6701824d327270a2aa876f49"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: GeoJsonLoader.parse: FunctionTooLong \u2014 parse runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/GeoJsonLoader.js"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8f251f1f9af7938048f4e1c4cf47817f0aaee55caf5d9a30a9d9787b444c8cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: TerrainFillMesh.getCornerFromEdge: FunctionTooLong \u2014 getCornerFromEdge runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1af06c0ac196e60d09c9f1ba10ba9798aa83d6c30c08d2a37b777e236947c2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VertexAIClient.processClaudeSSEStream: MethodTooLong \u2014 processClaudeSSEStream runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"5607b18a14add7f615d86af5b4318051609b8a64df48aa96b43bf9a33e8c8ce0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/Cesium3DTilesTerrainProvider.js: FileTooLong \u2014 502 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 2 over it, 1.00\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c184638b1af0e01651cbec0fd5c3942f72404e4c92cb154a3629826a6bc1cc6c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Renderer/AutomaticUniforms.js: FileTooLong \u2014 501 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: AutomaticUniforms (46-1919). The bar is 500 significant lines; this is 1 over it, 1.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/AutomaticUniforms.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6c3ad2de2e72a1fb98d2e06a85083156eb8893ddb620a5f57cdd3a6e3da076"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GlobeSurfaceTile (LCOM4 5): GlobeSurfaceTile\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTile.js"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f3ffec0265a15d04088f6ad1e5b3e06ed129d39daec19a689d68d48202f9206"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: does not throw when positions are unique but close: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Specs/WallGeometrySpec.js"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"305b52ad639238f55f9cf634c8282a57727af7c83279d639815ebeef6353e8c1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works with no listeners: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Specs/EventSpec.js"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"7987c6e3a724465e6ea4a43a25c6352fff577ff20c46c45359329ffb012985e8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects if terrain data is not available and rejectOnTileFail is true: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/sampleTerrainSpec.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"135d629e22888b3bfa8964d82df088ad6efd5c770dc919f1ee6125c7e4b9743e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects if terrain data is not available for the second position and rejectOnTileFail is true: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/sampleTerrainSpec.js"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3796b66f9f5529be07951734e477e6d265bf1906d625f1ee0fb70c827cc145a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: requires terrainProvider, level, and positions: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/sampleTerrainSpec.js"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89b454432ffeff7cf07e5de625d7018867c015d86364cf244b2d90b3c9f5332"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: should throw querying heights from terrain without availability: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2a5cdfaa28161a55ec71980c9cec3917d1d3a1ae21b78c91b05032c5fa35a01"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws without terrainProvider: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"b631d7ee59556229d74ae8a4f58f8a31070cefd37e953bae13407f3b98f29e6c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws without positions: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"7501e80895b95483e80be900f777ec9886b4a11509030a9f35f3949ade1b8b23"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects on tile error when rejectOnTileFail is set: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/sampleTerrainMostDetailedSpec.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eaddb8cfa2e5c3b9c2e986eaf4ead8422784d36b82fca8780e16c79629689a3"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): can not load an invalid image: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/loadImageFromTypedArraySpec.js"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b7738ca561a28a59762cf8eed91d631cdc4f8d4694f319df7f43f0142a5e3f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Syncs time when looping: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/VideoSynchronizerSpec.js"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"85ef1a11cbc91e4988f0bc14e7bde7d736ed0b4e6db885cf5b4bfa68da877f3c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Syncs time when not looping: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/VideoSynchronizerSpec.js"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"20962717946bf5fcd6c10f517f1cd9e756b9e740c226a4a41db35275dba4a163"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl rejects without url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/VRTheWorldTerrainProviderSpec.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb389c3dd44bced244e7c44362b5748e3e45a3e5ffaa5911a9c88e1c2242c0c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if the SRS is not supported: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/VRTheWorldTerrainProviderSpec.js"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c61cff662cb58cc688526df8f3d7d83557693808f7550fc97bed0e117cc4081"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works with a simple worker: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/TaskProcessorSpec.js"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a023d10a53f424edbbe6e53589b32409d5f25ce56732d43b8388ff1a076433d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works with a simple worker defined as relative to TaskProcessor._workerModulePrefix: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/TaskProcessorSpec.js"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"c58d5297e3a17748e5d7267b7def73803243cf12346a2e31a4d78c1e3f919e35"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects promise if worker throws: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/TaskProcessorSpec.js"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"c253c183ac3580791bb0500a316a2af8b04ec92ae778fd691e93234017641cad"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects promise if worker returns a non-clonable result: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/TaskProcessorSpec.js"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96db4d53dc61f1210e3d31b766b6ede42564314ea99807f738a91f18df4643e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws runtime error if web assembly is not supported and no backup is provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/TaskProcessorSpec.js"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e12f007f75bf0bfad68e96ae77d1bce3ea83207f61e227c5303ac25e168247"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: snap is not implemented: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/SnapServiceSpec.js"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"d023e62d7e94ccb6562968c36071602dd855e5f015e39b8eee5692ae959ef164"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works without a time: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/Simon1994PlanetaryPositionsSpec.js"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"0695e7735aae45b1d9b9bfd6ec5c4dfd40c33e4f3abaec7da43119bb6e015ffa"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: (unnamed test): This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ScreenSpaceEventHandlerSpec.js"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b11895d3ba7536d4b6aaa022366eb1091bd2c252a3bb6293b147eba919ef3e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws without assetId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/IonSnapServiceSpec.js"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f1d01c81f0f856d7a9fc8bc1292a8ba16a19376cc89b41c00015504d54adb5c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with RuntimeError when the asset is not geolocated: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/IonSnapServiceSpec.js"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e1f58f2fe5eeb640205617110d302be7bb4fb50607dc61596476c51aeef3fa0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws without required options: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/IonSnapServiceSpec.js"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eeb85196afeab14a4f126099ad1a0d81cc4538e84d38a5bae692e7680102152"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rethrows a 400 without a no-snap message: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/IonSnapServiceSpec.js"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"29e583da33dc37ae524414139e5163d73d351b7ec251489b94ae8ff8d2055d9b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rethrows non-404 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/IonSnapServiceSpec.js"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f20ff9bb98482d96771ebc1ec0c796ca8135d87248504dbe2b866f845f98a13"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromAssetId rejects for external imagery: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/IonResourceSpec.js"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ed24dcf262f15227f71dc416cad697d537c366d91e484cc4106bc2cbe331b5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: allows configuring xysFileUrlTemplate: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/Iau2006XysDataSpec.js"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd5af5ac2bc37a355d706c9500ab1a5a50af8ebdfb907817a60ebfe988f3acc0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no iModelId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"b65a2a4d7704c8225e0d70ea43ae20358e4a9258e06f4cbc96099700a1bb0b1b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no default access token or default share key set: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa67744a1c385bc93bef88345ee4a484f003ff199d94115a458f00f113671d0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 401 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ade8233bc26ebed96c21761e459b606bc78d3683fa115d5511a1a125de24bb"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 403 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"d463e7686c70506a4bbf647a14fb7be5436da0455986bf4d291fab0e93e4427c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 422 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1225f352a819dec159b954ac3f052960ca3f4eab6a4ecbc9ef4b569daa71bf0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 429 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"5130358976bdd88f9c87fec2a0a9081cdf3a166b52955bc1ab45b3912400bdf6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no iTwinId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d3b510da1fef0a4edf2a11a7f4522173d2b4d9c3ed380d3dd888ede180af45"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no realityDataId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7dc1639450644379934887c262879aafc76835d682bc86d46cefe4dd98c3b03"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no default access token or default share key set: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c767c12f9399ffb354848a3e1854afebf798626140fde68c56b9ce961a4c19"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 401 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"deea1027e9508b20bbcccb9febe52e716e76e19d848de955760b793e15796fc5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 403 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e9c67ceb9ab047c695ac862eafc371f588a51bbdde9fef0eaaa2f7b91deac7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 404 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a15db8a5191878c0fd413d13fdf2a59fae788c3969ca08b3d782ff5eb693fc"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 422 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e526c8a10914c1ad5505941d93c8aa629d678103a34295df3e9fbd7d08fb71e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 429 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eab7e97ee11dbf2f93193330bab895ecc470fa2222fd8acdcd42e91dff7c02e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no iTwinId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"03387ba5f50a00db15b9c44c5bcf2c417a84def7430a8e5d84410eab04c42807"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no realityDataId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a93e3e651a94dd3c3eff58656f79d9fa6f0cee203473a1c6314ba504f5f58ed"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no rootDocument: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"60b8b097528a5b32608f4c28a78775c73039c8cb0dfafae369f60cd7c33afef7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no default access token or default share key set: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"e14dabfb97610941610428325528b31fc70e9ac6c01a74e4987fac98644cd9ff"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 401 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d77133e7b9487793e7b218ca96385dcf0dc27d2ab27394085f8a2a98fb3e0d7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 403 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"998440f3a62876c730cbfcafb0deab6a627d6c3df3488e219abcb99f8acea024"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 404 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"d597ecf838d2e0ba64f34ed5e04ee64b5c2ff773da6276af1b4e661eb56b9473"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 422 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"a77452e9568e38bb92e42e71a31c50bea2d0d43123ce630f373b0d78497fd463"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects for API 429 errors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ITwinPlatformSpec.js"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"84930ef78183e3c38b1664caae0a45ed61df3a13597e56ad552e2bf0e94912dd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl rejects on error: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/GoogleEarthEnterpriseMetadataSpec.js"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"b996c9005931c300d84108440f53f4d0146156dfe2846f43feb909d5af846b00"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws a RuntimeError when loading invalid EOP data: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/EarthOrientationParametersSpec.js"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ccc228260e12bbe18c81c7940eb947f90a499fafaf71b3d93e16e89f94de8c4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws a RuntimeError when using a missing EOP data file: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/EarthOrientationParametersSpec.js"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"410cdc2e7e8df49189f4d91b53bfb89d69efad46304a9c46e8525db7618e8e7f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromIonAssetId throws without assetId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"235a0682b386066228e769e7d270e8416fadcd22712111a3d38a50b83cc365f4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"90e5ba3754b94130c75ade5cef11371fa0fc71cfa0a487ec0da752d5ed6d181a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl rejects if url rejects: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce42446a4f118f005402946845ae813ed5b2b1c760af63787d7e67456e0c466"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if layer.json does not specify a format: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d6805c064ffb5d7e9002b4fff9cf0670b4bbcb49ef64a20d59189838c3db6b3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if layer.json specifies an unknown format: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"f943180b66507f0fdcb4eda721a1b14c47334bd83193689cec3c3b1a5f93b7d5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if layer.json does not specify quantized-mesh 1.x format: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3a24c8fa5064da1bdc80f8080427076cef00a692231263e08d2646cfc356192"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl supports quantized-mesh1.x minor versions: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e55000b39cd427629ce49f79428fc4e6f89f6e5f05c13fe998c8ad808652e03"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if layer.json does not specify a tiles property: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72c856eb4c89e35dffde97d399c6f5ee577e63a1fdd8695538fd83c856612f2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if layer.json tiles property is an empty array: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CesiumTerrainProviderSpec.js"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc2d1302a6d621a28165e72c16a1fc9c1dd04afdedb6f3457cdd47cdadbed956"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if url is not provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/Cesium3DTilesTerrainProviderSpec.js"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d90b8bd22d349757350e3cec1c0f053d6bdd857d737205595d1dc61f6d8dfb"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl rejects when url rejects: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/Cesium3DTilesTerrainProviderSpec.js"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"530ed2f8ecba9d92ae22caa9b684bd8f7c025ebd7777c28922aa2423f5191821"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl rejects when url is invalid: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/Cesium3DTilesTerrainProviderSpec.js"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5f8ee15ecd05030976587b8c3e95ecdee0f6c860d332d5971e758de3a8d608d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws a RuntimeError when asked to compute with invalid EOP data: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/CelestialFrameTransformsSpec.js"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b4650879f0965a1548d89fbc4d420f3114a60df668a04395490c813fcddfa2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ArcGISTiledElevationTerrainProviderSpec.js"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"81cea21eaa7f12397c3d26c8581d5f45c6c2a868ca4e7938e1c5273bc8735274"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl rejects if url rejects: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ArcGISTiledElevationTerrainProviderSpec.js"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8dde6df284f6427af83db3e6c25f02253ae1a6c19ce6496fed973afa3d9d09c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if the SRS is not supported: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ArcGISTiledElevationTerrainProviderSpec.js"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed554d48b51f8dafee17a99787c8d40c78526eb8b30de9d02e95759a229b0fd4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if tileInfo missing: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Core/ArcGISTiledElevationTerrainProviderSpec.js"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1b26d0d936c69246f0f6bb74809ff87b5fd905cd760cd139df2f21282311bf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/WallGraphicsSpec.js"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"053dc1a2ede257b8be66aceacdbf03f9159d47c6208a3d92af81a2c268c85f2d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/StripeMaterialPropertySpec.js"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5b82e6b194b77987d8d834635bd546421f620eed0574f7bd9f36e6c856f618"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/RectangleGraphicsSpec.js"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"597e81ceb5749b1dd61e012c556ad2f028ed6a3cbb9157d8ad0f0efbc3cd0661"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/PolylineVolumeGraphicsSpec.js"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"2191da17c8dc51325c7dfac3c021dfd6a3f4b8252cbd34fb4594b7075a933a9f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/PolylineGraphicsSpec.js"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87b42a434e2c1ef8188ce32941e79c32102fe24a632cecbb298700b39b4590d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when glow property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/PolylineGlowMaterialPropertySpec.js"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eafaf76210012ba20b23e54d6ae778f8d5e2e07d99ae5623e9c8ed45cc0551d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/PolygonGraphicsSpec.js"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"265129ee2f8b00105de0fee99f58dcb57db42b54305fc6f8b6e0a0866b525858"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/PlaneGraphicsSpec.js"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"35119dc1eecfb89e763cd4604f8a45eb58697a03654c0fa27f5c066e34278a40"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adding and removing an entity path without rendering does not crash.: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/PathVisualizerSpec.js"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"effdb65c0bd62374df094d12ab62475decc7c057f523e718deac83b54909bed1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/NodeTransformationPropertySpec.js"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f2139516ca1eb7214727e63839abf6d5521d48f6291de8ec384f2cf0853116"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: can handle embedded data tags with missing source attributes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/KmlDataSourceSpec.js"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"015b37b1eeecc9dc79a44980b5418d4a21d5ae73e1c59ae7a421b75dbf3b0fee"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Fails when encountering unknown geometry: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/GeoJsonDataSourceSpec.js"},"region":{"startLine":1476}}}],"partialFingerprints":{"codehealthFindingId/v1":"63c8b6d1ba0add3649b978ec23399ec1e75ea016be182cb8744ac7bc1116bbd1"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Fails with undefined geometry: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/GeoJsonDataSourceSpec.js"},"region":{"startLine":1486}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc7d40b33ba2794080e66a8881db639791b970e988aafd1a17daca68de41652"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Fails with unknown geomeetry in geometryCollection: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/GeoJsonDataSourceSpec.js"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9b96368733de2bf89765dfe24a8d1859460653bc8f8932b6383a1637454e63e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: update returns without entity.position property.: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/EntityViewSpec.js"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f191d2104d27c5f09d6ecf52f4a4d8ebc6f8cf285c79f3d3c77b6139bb61af"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/EllipsoidGraphicsSpec.js"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"f595a8cfb9ca6781af6509853e11dffcadd04b781557a089757781c18244e363"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/EllipseGraphicsSpec.js"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"3249ba8fc32f66ff5e1afb303ad03f90b790b556d2e025c8ab670d84f33fea3b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/CylinderGraphicsSpec.js"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f826373afd8f9838e79fcda2b5114c12c5f4b80a040ada5d2eb5c2e401ef422"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/CorridorGraphicsSpec.js"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"d176e3b5b10fe5c888044b9b0be2a5ff397ed62d028eb5dadb29f38c12cecab9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/CheckerboardMaterialPropertySpec.js"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87afff2a9862523900fb20ed365dde9c7cc96289b5879309642dc3acc2a5778"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: raises definitionChanged when a property is assigned or modified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/DataSources/BoxGraphicsSpec.js"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd64db407401e0f492a64e26919ef9d37c0992ccc2db0d798c1aee83b09523e8"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): calls error function when positiveX does not exist: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/loadCubeMapSpec.js"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"c299bcc73c4c1c5b153f07b57d113da602f52681253a04ad0d0055cad2895bb4"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): calls error function when negativeX does not exist: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/loadCubeMapSpec.js"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccca7d0e16ef9f14a952c31f15844cf2a2592428e04f21ffb236c427922cd3eb"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): calls error function when positiveY does not exist: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/loadCubeMapSpec.js"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"0797aa3b1f9db0b67fcdde68266cb94c218224c631c2e6a642f4e7ee55aeed38"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): calls error function when negativeY does not exist: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/loadCubeMapSpec.js"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac84d8a1e595cceccb86e6045d8d9b3f3e7968838fdd8473d9907a633be115a1"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): calls error function when positiveZ does not exist: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/loadCubeMapSpec.js"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"30afc0fe77bdd23c6ebf77c26974be3efd4a1f565d70de90235640ccfdca851a"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): calls error function when negativeZ does not exist: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/loadCubeMapSpec.js"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"71d2aa627f18cea07519174c860dd74e5cbee4b1a33ade7de63d13fb0a9fce30"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: binds: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/VertexArraySpec.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0de82941b19f1156aa52dc7183c947e67ff3383ca63c2946c1ad20ddce01c14"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: waitForSignal to resolve: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/SyncSpec.js"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"fab777acbfe86156829ce9be52a12c1fe6fe972a2234d7b18bdd017ff554c457"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: waitForSignal throws on timeout: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/SyncSpec.js"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"44853b5026c2b611d5b4506eb16ddfba405be957fdaef94532d762e1aa0ac2b2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: waitForSignal throws on custom timeout: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/SyncSpec.js"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"802a4b88e7279d8052fe2c4bea39d55ebe29029937f2d8dae137bbdd84b6157a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: compiles with #version at the top: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/ShaderProgramSpec.js"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"8befcea2bd77a8611f6ee41df8e449ce73eb8f63dcf5b025084b9af060f7c0bb"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: compiles with #version after whitespace and comments: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/ShaderProgramSpec.js"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0c9bd81209813aaa358e20b7ca0ee8e0900a5365bb191fd0ab56fa8e0ebc923"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: non-destroyable objects are allowed in the cache: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/ContextSpec.js"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"11cc06f7e98fb077675e3b76397a04e1c7b3af317b50bdcf8218ea714c7def63"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: copies array to a vertex buffer: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/BufferSpec.js"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f47630f92b91875060c07093db6ab53b7b9348c10783bb5bd9fc449225ed6fe"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: copies array to an index buffer: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/BufferSpec.js"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"9942c1f5085af60c7e36e6e842ba1f57647e65fec23c48c2b0ae7f5da37c5315"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: copies array to a pixel buffer: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Renderer/BufferSpec.js"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"5856bda7029935cf4f1757739b2111212d57c76e037e157cbd56bab50dcaf05a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds shader defines and structs: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/processVoxelPropertiesSpec.js"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a62918ae98a2e0753aa9d13fc1c49abc15636969b8c833fd70791868a0ea2a3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid version: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Vector3DTileContentSpec.js"},"region":{"startLine":2160}}}],"partialFingerprints":{"codehealthFindingId/v1":"362791f1b5c8ab47928da8d67420589ab7052f0aa5105ad72b7a00b4a3deabc9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with empty feature table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Vector3DTileContentSpec.js"},"region":{"startLine":2172}}}],"partialFingerprints":{"codehealthFindingId/v1":"37454f8440aa25cacf842e63f3d98b49090ee393abda39c5631bf2c73303d697"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws without region: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Vector3DTileContentSpec.js"},"region":{"startLine":2184}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d222facca06612002830d3720b2d9faaa64d4d56512af67f13971e56d3b1158"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws without all batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Vector3DTileContentSpec.js"},"region":{"startLine":2197}}}],"partialFingerprints":{"codehealthFindingId/v1":"2723923dd6008811a25a3976ef945bf7e317e6943df8e04c661efbb7fcb190f2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: destroys: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Tileset3DTileContentSpec.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"5deb7526b275d02a9cc8831233437b6f99c166400a0201b3c60993f65dd8ed87"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/TileMapServiceImageryProviderSpec.js"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"4340126cfb2757b2f1cb964091e51228cd6a9c959813a1214613d34334e84429"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws on unsupported profile attribute: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/TileMapServiceImageryProviderSpec.js"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a35d0f5ab3c8cee9bb162453c73f7343ad4f73b5efeaeae820d5c5ef45265d9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws on invalid xml: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/TileMapServiceImageryProviderSpec.js"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"137deb3404d35aaba771167df1b2839e49b537cce9e49070f011e973cf2a15f0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/SingleTileImageryProviderSpec.js"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ebc5b5342e03a285d9a21dde923febf6c009443bdcf8ca274500024c9febc9d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws on failed request: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/SingleTileImageryProviderSpec.js"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"4113a41b52e36252b1d010b42ba32c218c4b647612508b8d357da960dbab7280"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: frustum culls polygon in 3D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PrimitiveCullingSpec.js"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23d478828a2c7bccf0184845b48f04fc0a94172636c9adf6cbfd0890d0a5d85"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: frustum culls polygon in Columbus view: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PrimitiveCullingSpec.js"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"1326d03c6428e7ccdfe7389ec99e3f5cd257142caa9151414b7c0247e7a56829"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: frustum culls polygon in 2D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PrimitiveCullingSpec.js"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"348650b8d0183c51a804ae0562baf9d81d9a21606b843b0c6ddea2cfbf6b215e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: frustum culls polylines in 3D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PrimitiveCullingSpec.js"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"b69d8cb7c32fb69ca9577a9e3ce6874e5e8a84315a64b36414d621f6ab06cca8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: frustum culls polylines in Columbus view: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PrimitiveCullingSpec.js"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"125c0f31f0d21c68ae59d58d2b30fb50f7417d38a56d09514a9886cda15c8821"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: frustum culls polylines in 2D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PrimitiveCullingSpec.js"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"b525ea596dfeff54ad093cf6b9f19a81c06fbc3f3af98b7e0429fec3b138b6c9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: A polyline that used to cross the IDL but now does not, triggers vertex creation (This code used to crash): This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PolylineCollectionSpec.js"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3fb04006a16c651c7c416e846cf5514f407dfa26cab5fdc28a01528be7bbc94"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: can add and remove before first render.: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/PointPrimitiveCollectionSpec.js"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b60bce092eca096e7985875915ad313f1030c5270a98e99d767196e946e1646"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders multiple contents: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Multiple3DTileContentSpec.js"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"4861d617f70748312b3e8afe93674d5312c128eee82793b3382d5c46ac1d6238"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders multiple contents (legacy): This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Multiple3DTileContentSpec.js"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ad6ff878ba8dbf86b39f0683c13efbeee38c5534ebeb7e969068e04753ee9a1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders multiple contents (legacy with \u0027content\u0027): This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Multiple3DTileContentSpec.js"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"edef2f344bf1e98d3678ff1b18bc5e2a9cecf72d772ce0a1fdbe0d4afdf6a633"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders valid tiles after tile failure: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Multiple3DTileContentSpec.js"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9bf870060d3e6a4d4b976abaf1f637e1cabde688f4d4fa40dbb7ea940be147"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders valid tiles after tile failure (legacy): This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Multiple3DTileContentSpec.js"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"488db9be0e1f3488c97aa5529ec7d62b7a7de6fcd9ff7922d222df402c8be30b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: destroys: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Multiple3DTileContentSpec.js"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"c29264f9351202715a755c1fc599f37b7034edb331d95d7df594fd916ded31df"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: render without a central body or any primitives: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/MultifrustumSpec.js"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"1366c862b5684aa77196f139abc9f889ef6f2281663afe853e0397e7ffb11c56"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: does not crash when near plane is greater than or equal to the far plane: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/MultifrustumSpec.js"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b924e97bceddbbca74f2e784cf9e141877f330f9bf41a187454b6f9f7736403"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if schema cannot be fetched: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/MetadataSchemaLoaderSpec.js"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b37746792b0c393d1f2908e0a15b12999955502eb1d7b4e9b1cf884952b2654"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws when loaded async and image loading fails: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/MaterialSpec.js"},"region":{"startLine":1114}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2fc6b6022173135f972f489b269fec2f84e2936028c62bbbd8123f377b29e0b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromAssetId throws without assetId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/IonImageryProviderSpec.js"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"8611e00e78be532b01c1008b966fbe6d7b14a781a4f419e8b3b16aa503a6fafa"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromAssetId throws with non-imagery asset: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/IonImageryProviderSpec.js"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"d586c019657056645650a086e490e68577d986f635e13a461275e9bb78524834"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromAssetId rejects with unknown external asset type: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/IonImageryProviderSpec.js"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c58ca3b68f4d42ba924d5751fb62a3bb62eaddc6da5f195361582453c5c36ee"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: ImplicitSubtree.fromSubtreeJson throws without json or subtreeView: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ImplicitSubtreeSpec.js"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"680186cce050b3f589966d5891df41f626da19f354c4081474d9ad345daf17e9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: does not crash when raising and lowering a single layer.: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ImageryLayerCollectionSpec.js"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"db2da63c959cb05c79bef72d304a9e25b12239e46253a2da0c3a536cb2840b3b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects when all exports are invalid: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dbb579d940f9ada7fdcaf84dfad04febc156e76e0f24b4e9019d19791d31d90"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects if the type is not supported: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5960f4c695283aedeb96a57b298111b61b55be330f8091051ca401ddf4c8968"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects if the type is not supported: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c546b30934f49c0a3daf83850c0d49cb6d9eae48370cd69a2b96db203a94248"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no iTwinId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"87414c9a90b6535190fbaac3174110ff5834b2f65c3a24f0c88eac59ae049519"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no collectionId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ea22540639813351f987d685e7bbf86e4a9fe909c1987c61f14c0b562eb28e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with limit \u003C 1: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"494e25e82bd2dfc0e6332f7a5ecca6aedefeb0e2b89fe4ad01351aed28e02e2d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with limit \u003E 10000: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"0485103c6a08fb275e83bd7322afd7690e286fb17ac26d4fa579f03082ae3c46"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: rejects with no default access token or default share key set: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ITwinDataSpec.js"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"29a1eeedfc9b84df013bf3b654ccea6f21e2d0ee950614346860eb0090b19f86"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load feature data rejects invalid url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SNodeSpec.js"},"region":{"startLine":1550}}}],"partialFingerprints":{"codehealthFindingId/v1":"82f6fd16f00627f29c49e4c5756429df0e0d64606620699ad6036082449f9557"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load i3s layer rejects unsupported spatial reference: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SLayerSpec.js"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7ba3c592daad7a7098c1cbcb086d27b16cd856c78518eea895dfb9e42af0c1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with no url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDecoderSpec.js"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c433dea6c608e86eec449d83f1d514817bceb1da2ef840c33742da7b64ab9c2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with no default geometry schema: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDecoderSpec.js"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dafa2a82da44f10fdd2ae8c7ae3bebc85a48a206b98ba27a2ebfe710f6891de"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with no geometry data: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDecoderSpec.js"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"528f852748f2faf3b956f32821d744f3277534f05f26276cf738b37d0ff9036f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if not initialized: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDecoderSpec.js"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae16cfb973187be29da84476fd9e78d03dd1421fa5f8f0344bd84bed96e5cb8c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without url : This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDataProviderSpec.js"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"c249c4d38f148f355866b704ea9eb40830bb5523cf56840bd12f628444587dd2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: loadJson rejects invalid uri: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDataProviderSpec.js"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"df07b1ee86ab437d29fc810d868437807ef581855bc90a59b0d341b2ea1f29d5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: loadJson rejects error response: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDataProviderSpec.js"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"05335cf2eafca6eed5a66957c2ce6fa9c45c17579c0a333f7ea1df9a8880be5f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: loadJson rejects error response with no details: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/I3SDataProviderSpec.js"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"a44cbd0f1edcc5e1d511aa722b24e2e9d9760e4f1c24a2983821c6de8d7d9ab5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders in 3D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed29df3a07cf8a91cf07e0f28c8f6f861ef88697b88bcc4183881e657bb6c7d0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders in Columbus view when scene3DOnly is false: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c8971800139ca7e1c5ffc8e1c7806a37e5d1096b9e5a1e6808e3f063066aa41"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders in 2D when scene3DOnly is false: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e0c6979cd21ef583d94b3f9c0d5b27ff4f1ce0fc28d28536d72fdede244a10"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched instances: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"509418407c41deb3e416f0594174275cfa3604e5672db6b2f9247c75a1c8ce28"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders small GeometryInstances with texture: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d2f97b17d43dc466b132767cea9f34fdde7a7261638cef401f03840fcb8773"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders large GeometryInstances with texture: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3baf94c8f8c91676393bbf1445fc7bc93adaf0da35b9693cf01631e8994273e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeometryInstances with texture across the IDL: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c0a1e59229a58dc5711dc5bf6db5cb3aaa6f0a2205b90e5e65719513b5e818"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders when using asynchronous pipeline: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GroundPrimitiveSpec.js"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbcbab4b96f71d274001b07fb3d15659110b4507abc2fd101a769e238b8d641d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: getNearestPanoId throws without position: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleStreetViewCubeMapPanoramaProviderSpec.js"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d2309c20a781c49abf56e412e1bf5e73e39ae9f3df31ef8bc157ce25fd7d45b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: getNearestPanoId throws on non-OK status: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleStreetViewCubeMapPanoramaProviderSpec.js"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcaece2c4b445bd20dfad7f41358eaad53c80d4ebf7ef763d70bbd329625a203"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: getPanoIdMetadata throws on error status: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleStreetViewCubeMapPanoramaProviderSpec.js"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f6bde1cb84cc5c0c25797db0c528b54572c3d60fe1e84617278c44359d4139"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: _loadFaceImage throws on fetch failure: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleStreetViewCubeMapPanoramaProviderSpec.js"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"656ae59c032b1f7d4bcfc302c4cc684f1b96e9c3b74d69a537f54b194268224b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: loadPanorama throws without cartographic: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleStreetViewCubeMapPanoramaProviderSpec.js"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccec97d187fa50b9745e92ffdb25b799a25dfa6c58775c90f7f8986038f06d38"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleEarthEnterpriseMapsProviderSpec.js"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"6034702dceb4500132b01f10bcc9dfdc2fadb65556f031e35d4bcee2910c2cc9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without channel: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleEarthEnterpriseMapsProviderSpec.js"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e593c6a8cc8d6341862be3b94d7740bb7e24c742ecb0f6cce5da0e197d2a02"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws with invalid url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleEarthEnterpriseMapsProviderSpec.js"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78683557789c02a0284e142f916b13589e07aa7ad3f67d2955714ed4500ba5e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws when channel cannot be found: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleEarthEnterpriseMapsProviderSpec.js"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87c44d6e030ab5b040c49426313f1e8947e970eec04f325b42fd7f1cb7e2f35"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws when channel version cannot be found: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleEarthEnterpriseMapsProviderSpec.js"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b19f5114cc4feb321c9e87ebc9ef003f04c5e57405f7cf843ad79d514f22e0c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws when unsupported projection is specified: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GoogleEarthEnterpriseMapsProviderSpec.js"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"78e4e2fb5bc5ba9aabaab7c810b5cb0f8c3602de7a191d8fcd305870cdde4569"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromIonAssetId throws if assetId is not provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Google2DImageryProviderSpec.js"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d68fd7e02832cbe3937227c9df535774f6db93fc20cd237d16aecdbced46620"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if buffer view fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfVertexBufferLoaderSpec.js"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32e19a8f4ccecaf383f2b7c30c2bebf796802140710942fe5fc826d031d6790"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: process throws if draco fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfVertexBufferLoaderSpec.js"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"35efa8709d6893132e52b355389d250097eb99848130ad84636027c35add5e0a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if image fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfTextureLoaderSpec.js"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1d241398cce09826f3a9b06051eba78a030be8bff0da5622ca885e80ac2cf1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if buffer view fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfStructuralMetadataLoaderSpec.js"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9108aaca9341ec8b1c9a40c1749300c5fee022940bf87ade50c8b36f0a7fb07"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if texture fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfStructuralMetadataLoaderSpec.js"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"e267efe166fc0d3c3ca624941bafd99c1e37e7a4a50ccc9bba3871c8e98377d3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if external schema fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfStructuralMetadataLoaderSpec.js"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"e039990568109c8c511678417789daa0833d507722809c7e70a252262ca4dfeb"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if glTF JSON fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfLoaderSpec.js"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9054da0219be744fa971508c1f34b69b67bcf8284d58472b7dc964229988589"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws when loading instanced model for classification: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfLoaderSpec.js"},"region":{"startLine":4173}}}],"partialFingerprints":{"codehealthFindingId/v1":"e95817adb1a1cab63b8e8dd598ce9d4a8e14c69264f33f311108ff830ab4d433"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws when loading non-triangle mesh for classification: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfLoaderSpec.js"},"region":{"startLine":4186}}}],"partialFingerprints":{"codehealthFindingId/v1":"321c5048d43d666a28c82af29417183c1b3054da15065571552fb0f9f2301e98"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if resource fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfJsonLoaderSpec.js"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad18f9280a43408d6270cec3c4d6217095d5d23c40122b6ad7f78510eb2ee76c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if an unsupported extension is required: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfJsonLoaderSpec.js"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"809dca2d10f4518336e6be614f964a43ee257e1305ebc2f01f52b009e5c540e8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if glTF fails to process: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfJsonLoaderSpec.js"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"39f276225677043376bfb099481233a478f30efbed1592039b21624155d6637a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if glTF fails to process from typed array: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfJsonLoaderSpec.js"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"078056e736bd752486a53b5acfa96111f8c9b05ee8549285417ecbd9c9858cef"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if buffer view fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfIndexBufferLoaderSpec.js"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0e118f2bf4e3cc35cb124fd5c278b6991cddc972c7dd7ee9e2aaba4c7cd41a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: process throws if draco fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfIndexBufferLoaderSpec.js"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"0370d54a2e077ae1f17bf2e0ced20dd8d828416ba61cb047d79789dc0a041494"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if buffer view fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfImageLoaderSpec.js"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"df956a2d50d32e4f509b8d3c2448b1282b41c225dc09ab140cb67c3288c51b51"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if image format is not recognized: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfImageLoaderSpec.js"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e87b299eca4fbe8e2a223c9d16c635a76ab0531bfb633772f3534b1eccf57c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if uri fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfImageLoaderSpec.js"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ed6e2e2733e3a334177942f1525651bc42d6b54d604a134eccf3ae74f4ed83b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if buffer view fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfDracoLoaderSpec.js"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"089b52c5600bba588c2d32c87a018410a415755f7a653f27d402dbd117f5799f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if buffer fails to load: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GltfBufferViewLoaderSpec.js"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"482f88aacc2feaabbb05e1c3f878efe443eb5b25c965535e127a2ac4d44492fc"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders on 3D Tiles and globe: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"788d090b1fa212615679e7770246350a29e0b5ab9e0ea6d6d0b8d68d084647fd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders boxes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"946b6681c4e6b0fe95e8145c1d106b513a00b4632a11e650da1d83d1c2d55222"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched boxes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"289ec5df3a018ec7bd4239c449c7d018ef883f411a2475a6fa420fe0c446de0b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders boxes with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"709123a81a27712973ae62df38f2d0f8580eb1675a70bbb6dff582f271df7a04"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched boxes with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff41d4d9196fb46f5d7c46e25a383cd86f2c84d6a1c42a648141a7a39ba8b979"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders boxes with batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e207dc47839c863d44cee7273e40be5b443409d8f963fecb41bb2dce285f35"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders cylinders: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4919135a72135d5cf4c4244f8042d806b658f0c934a379eaf0cb887876a770f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched cylinders: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"60440fedc46de9577abdcab2452d6288c09aedade698d0e6bfae0b59d7a2efb7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders cylinders with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d847eb40930108524da57a008b23ce4b172c4f4b55f860bcbee96d893fabb9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched cylinders with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"f134b7fb912c3a26eec6e49674b5167b64c779c18d739f544eca62b34ec3bdb9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders cylinders with batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"3724cbd97be0801872fc015f1c03cddcb92b3afde4fe441064c5496bd60ddadc"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders ellipsoids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"9970b77a08953c0a504c2f60c4559b139c4ae8a4afd590f5b12c580537e6e08d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched ellipsoids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb7b437811be5290e44b86d59167faf9ddd16d20fc46026b1d548f7ada7e771"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders ellipsoids with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dd30e3e7f368118e3079c5a1d02a36ada4ea1383988fe8777132f6ac55746e5"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched ellipsoids with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":586}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd86cd00137ddd33fe3000d3009a235d5c42addbba2503c1a6464f4afe8d504c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders ellipsoids with batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f1c8c7fe7927a0dcb9f132b408499cfca3c9f84a93e7279c8419b6468f8bd9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders spheres: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b06cd46e3f1c6e94f9be4f7108b4e3de53fe025e22e22b0bc6ce7d9ca53b2ab"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched spheres: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"b61baffbf5824e66eee15dd001144182ef277e8aa2465bc881380124191f12d3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders spheres with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc96e03e430c75860876eb2ff33bd94834da13cd4cc4487f2dfd4930a541d1a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched spheres with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac89ab456752650e275d899733a22ae8e854bec081ea60abcc48cd5c21fcf63"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders spheres with batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"d228f20d361154c5d961936acac1ba85d490883cf6f1c1ff38f3ea602127c79b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders all geometries: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"bddc54458a8b0143257f894632a04d47133494764fa757755e47e8f69b79cd2e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched all geometries: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb0576d880a9173dafbdfc1c20d8adeda4affae1407bbde5bf793d93f471203c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders all geometries with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef97c5569cb440f3ee0df0487eee4a20d86fd18f5f41a2aada9cd91a5f3d02dd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched all geometries with a batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f44cc8eaefad43e87b3708822813230e81ff8f3da9b2aec15bff73a573076e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders all geometries with batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafeacf33201b79ad3aac9631f6648fb566adc7a282f2c58a6142771e36b8549"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid version: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ad2d7d8f5daf61d8c600991af006a8db855d4dde86cb6e32a4104a32efa90be"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with empty async feature table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d21a54fc72ed5609c48585057e08efb7fbd080b22085855eff777264733e424"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws without all batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Geometry3DTileContentSpec.js"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"017487127fd2e0afd81b7bea94f33732f02734762e973e7b1fb6fdba3a2f5765"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl rejects without a URL: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/GeoJsonPrimitiveSpec.js"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d02a75a67a027a58fff17c5b7e3c993f7ee1ba7a5923d8386af5753928a22dc"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid version: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Composite3DTileContentSpec.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df1564391d90146398dcacebc7cb189de38a40fdce8979cae88e1b43bba2f31"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid inner tile content type: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Composite3DTileContentSpec.js"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af39d886a08ad0707e532dcb528b1a723697b34abedcacf4cde6bf879683a3d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid tile content: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Composite3DTileContentSpec.js"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f04a5935214cee50336cb451b9b5ae265e0970b80a48111f8f6db306f21359b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders composite: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Composite3DTileContentSpec.js"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"dadfdde1af3410ad5c1491476393710d5dcb6f9d9ccc6e7fe4ec34ba4f9f791f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders composite of composite: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Composite3DTileContentSpec.js"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"da05a641435caae7d93bcea8ba2564214f0acd8fdcf4bbf7efa2b8bfa8aac949"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders multiple instanced tilesets: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Composite3DTileContentSpec.js"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"85d96eaf5955c2c20dd5d62c3b3c35329b89d73496a7a4b7ffc2a8bdce2b2928"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: destroys: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Composite3DTileContentSpec.js"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ef64c2156a35a689f9580264d0fab662249408c8124de41cdef321d0a622f4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders in 3D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ClassificationPrimitiveSpec.js"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"09347192f9a6ae7bf8dfa2441e1c3d4e564a3a9156aafd9409c937b2d7f24fe6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders batched instances: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ClassificationPrimitiveSpec.js"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"b52eeff87e131dc21ced7255f05eedd9d37787c7ac6c5ce98a8bb82acf3467f0"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders when using asynchronous pipeline: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ClassificationPrimitiveSpec.js"},"region":{"startLine":1141}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd37a7b8e60e77d0e611926c2e8c91139cc78d6d7420a73e61ddabe90cc309a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: loads json with static loadJson method: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTilesetSpec.js"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48a71782e3ce26ac206bf581af03631c0d3f91dd74959752f6f8944702eafd8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws without url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTilesetSpec.js"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"3619e18448a3cb9b38d6420079c5c02f4ce1e508f39bdfef66520a3ce2e6acaa"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws with unsupported version: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTilesetSpec.js"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"35ac27dfa03c4370aef56cfe30ee089762a07f2d45a270d52ec47260780768e2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws with unsupported extension: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTilesetSpec.js"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"18e814b2c58f4e135fc68917d94ee81154b54da0467e8561f27c1cdb94842e3b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws with invalid tileset JSON file: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTilesetSpec.js"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4b17823c69c7c65ca474c27619e97704a7a4434369d6f4677241f86a1a7df2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromIonAssetId throws without assetId: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTilesetSpec.js"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e9d8afa79d8d0a6ce3910190b26d1beff8acc80346ab29ede76ae6a2eb14cf3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders when vertex texture fetch is not supported: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTileBatchTableSpec.js"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbd21fca6e32206d0212edfcde2460b6cac765c76dd2bcaebc4eee4931741322"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders tileset with batch table hierarchy extension: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTileBatchTableSpec.js"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbcf601f693f55cb1e05ee32c9fccdf93bc91038be5d39163b24dd86699b23cf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders tileset with batch table hierarchy using binary properties: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTileBatchTableSpec.js"},"region":{"startLine":1080}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eca1b43eefe0f5568df5f1dcbe1484df7995a76e45b509d47bcb94238134b8d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders tileset with batch table hierarchy with multiple parent classes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTileBatchTableSpec.js"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e0b8d7cb631cb1fbf488b283f7fff19e059ff2bfbe2fda2e857c4f8e732c859"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders tileset with batch table hierarchy with no parents: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTileBatchTableSpec.js"},"region":{"startLine":1091}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1a21d80590a90dbe809e23092e9e70c59d162482451f166deede4c8a2d27ffa"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders tileset with legacy batch table hierarchy (pre-version 1.0): This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Cesium3DTileBatchTableSpec.js"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d68933dfb90bd58166039facbae7dd31270be21d7ecf1703da189d5b96e7a30"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: load throws if buffer cannot be fetched: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/BufferLoaderSpec.js"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd14cb2a4bb048a55a8ce98a683dee01886461e6aefe0910f286c2d35015f1a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if url is not provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/BingMapsImageryProviderSpec.js"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed43e2c96a3e49888be744bca9b09e65b73507db3737ea6274678b29834762ac"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if key is not provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/BingMapsImageryProviderSpec.js"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab5690c960e4a46e350021f955348799bfa235982e704dd1fb5b00b6361ebe5e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if request fails: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/BingMapsImageryProviderSpec.js"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"906242c0a29554f970efffbb08a097f7c8e9e5481a2022f9267a465cb444d66b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: can add and remove before first update.: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/BillboardCollectionSpec.js"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"d94edf9e87a40648a26c69b1bb1e9a2976a69986ff95005333a38bd015b0ee1f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if url is not provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ArcGisMapServerImageryProviderSpec.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"5240d389517c8b02a5057411274720f4614d7f59c200b40418979dd9d4f2ec82"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if request fails: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ArcGisMapServerImageryProviderSpec.js"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1b6b724d8bdc9de07c5a43be0182451ef65293575bba96f08231c6c5cc2541"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws on unsupported WKID: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ArcGisMapServerImageryProviderSpec.js"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18a5d58265a420548328b4225acd638d728e075852cc719c0219a4f3ec0256b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromUrl throws if request fails: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ArcGisMapServerImageryProviderSpec.js"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"8519e91b9920d37f7de1c196f9df1ada5e8172becb6dd9553d91856b2834c875"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromBasemapType throws without style: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ArcGisMapServerImageryProviderSpec.js"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"206f4d42f246504c3de501b67a6a71cccd3534071fd62ef5c228869534e6aace"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromBasemapType throws with unknown style: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ArcGisMapServerImageryProviderSpec.js"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcbc041e3e6f543e4cb3f1d9d58afc87e7e81aa8e3091acccc591271af902c14"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if the spatialReference of the fullExtent is unknown: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/ArcGisMapServerImageryProviderSpec.js"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"7224d7aa0b2435863d9d4e9e5e8f5423f44c5c1dc47ce9a2f75ddec68c5e16e4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds define to shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/WireframePipelineStageSpec.js"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e6730478dd23cf30c46739bc8ded379f651c3c51120afaa4dc109e642a1050"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: substitutes position name in shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PointCloudStylingPipelineStageSpec.js"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a2fde1b24f97cf88b34201c0a0a3da38559b747816bcc92dd77880380ffdca"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: substitutes absolute position name in shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PointCloudStylingPipelineStageSpec.js"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"164465691567f414ace29b845d1b05a06d569e05a4c68e5e2fffc64d2def7fce"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: substitutes normal name in shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PointCloudStylingPipelineStageSpec.js"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"980308a4d4b66a5ba5beed5065443267fc8e39db3507266b753b9a99c75e4fea"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: substitutes color name in shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PointCloudStylingPipelineStageSpec.js"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f0b2683f51e41d5c36140501742f3a0f1b521163d887e985b7f910706b504ef"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: substitutes metadata name in shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PointCloudStylingPipelineStageSpec.js"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"52b354ea98afa413afbf83e8df7a59d4dfc9ce22e3be7fdfcc3e2ec5d38e4fee"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid version: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"329561945bfd9b9ee04b4035b936451d352f017afcbfcfe9ee034de512d09259"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if featureTableJsonByteLength is 0: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"b940a18a466c2a10470725499cb8e3d570f76fdbacea893274385286f226d540"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if the feature table does not contain POINTS_LENGTH: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b278ba806998542e283e5e8dd23cb729df64aaae10e93905431b58060e6b3d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if the feature table does not contain POSITION or POSITION_QUANTIZED: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"05891c8b92bdebbfb981b1cc6880d3025508d4005ecfd4eb2058107b44483d7c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if the positions are quantized and the feature table does not contain QUANTIZED_VOLUME_SCALE: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"099917af55de850d3484123b4adb11f29e587d1b1466bc1976f03d68cf51f80e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if the positions are quantized and the feature table does not contain QUANTIZED_VOLUME_OFFSET: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa1e4d67f44ea07c830123a623364f6fb2fd4fa3e0b3caf76b857bd081797808"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws if the BATCH_ID semantic is defined but BATCH_LENGTH is not: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"535ebc3b6cb86a24fb7ccd95677dd1e86a004064875b0922af1142891d49d47f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: error decoding a draco point cloud causes loading to fail: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/PntsLoaderSpec.js"},"region":{"startLine":888}}}],"partialFingerprints":{"codehealthFindingId/v1":"f052f2acee46550507bc39a0cbe4eefd1e2663b02781811ca88a45253885c33b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromGltfAsync throws with undefined options: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/ModelSpec.js"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"b04084773d9681416d440d4c5676dc4066e9bbe225bc38d0fac6274a0bec4780"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: fromGltfAsync throws with undefined url: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/ModelSpec.js"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"c255caef7ff62d72957d5c8db728fc75cbafa9d378205c9c9cbdcd7c079faece"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws when initializing height reference with no scene: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/ModelSpec.js"},"region":{"startLine":2544}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d59bbf589df28caef4a3cf7a493378369360ca0e6609048ecdb3b0dd602907"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works when initializing height reference with no globe: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/ModelSpec.js"},"region":{"startLine":2580}}}],"partialFingerprints":{"codehealthFindingId/v1":"53fe0cbfa75bf00b434a606e3ce6a8eb6f932224073848fafd111fda0c085817"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: configures the render resources for unioned clipping planes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/ModelClippingPlanesPipelineStageSpec.js"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"0330bf6fdf6dbe365a90d5d706ac1a7b96daecc16df180d6d8bd9e2f6860701d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: configures the render resources for float texture clipping planes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/ModelClippingPlanesPipelineStageSpec.js"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"5014c1f5a3759163a7c4685a9e8caa46434cc1920fd8b06b67920807cdeaab1f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON MultiPolygon: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f2d42e952b190e8e895703c29067b898cf710a78061274bdaa5c882d2adb09"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON Polygon: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"c722ce234547506f32fa36361a9626bd31a09ff4c56fabcac1fa7b6549fb3b8a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON Polygon with heights: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a6c2cbfff6b23e5f102d2a81e749d37c3b087248c9ee137b990732a6db6948d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON Polygon with hole: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ed960e3d7f9a15f155308fe738293beda02e9b603a67621da81cbd25595f0d9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON Polygon with no properties: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"63371d83b5958a9f02e80f483ee16ae130bd63c26f7c3ea805b9ac3873d220a3"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON LineString: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"e713c5d0d8068bf9442b805204da3204334ce605521519144b1837aaa46fa50c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON MultiLineString: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeeb6432f75f841fbbb81d91e5e4578b5b740361b7837dcc0f43c23a75f95f31"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders GeoJSON with multiple features: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2132dc22424bf3bcb5b2633e14fc6471d1a58992d326d99034966a0ea5fdca"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders b3dm content with batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1e718a564ea5501a6daf9d0ebf14ba0f51fe9024c377b604b269e37f02ac77e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders b3dm with a binary batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc4269d4cb6eed7a740db77396a4d95bfce1839148c71f4f6842b52e8fd2a4b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders b3dm content without batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"976cb5b28ef037679d8618af5b0dba23a4232ade64d13b8e5369d05a62e7061d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders b3dm content without features: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf3c6b6211659d29731f76bbafead799063dad365d806b1a2fb00dc9ad0a281"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with all features translucent: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ac8e61b5c8f454591709b763d163338a5ccd2d177e172e4c9bd21bf3207deb8"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with a mix of opaque and translucent features: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"35221b1f4e7d8dafba24dc8743e8c9c7697ef9fdbb423595ee56d883cf88525c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with textures: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf0a0bc584c7ff07d9d15e603500b6d13bd5fd5966bc79720bb4c44863745c7"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with a tile transform and box bounding volume: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ea3b6f39cc045268e40af8627b8c6c8ced122031e7c2bde05a51f71e9a3874"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with a tile transform and sphere bounding volume: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39cb6a90cedbf8d23c304fca19d5ce617e89297ee0e5266dcf85631444ed82f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with a tile transform and region bounding volume: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b88adc0fb33bfcd794b2d571e18c167354372a15327b6face912bcab3cbdebd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders i3dm content: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e688360f25e06865c318ccd80faf18f79a3e71408294b96c81c0323c5c4ea57"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with external gltf: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"d14cf6275630f21606834524d66b15dfc8f480e269deb47a84ebf3d9e7ef9f3a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders without normals: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde0152431a40764adb185a8b1aa3f2f66b355955a84553ecf6c9af01b85aba6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eac0a884270f319634855fb86abf6c78f6a76a9ec80224e32139f16e5a58d26"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders without batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7cd119a38880b18f564f09b11f033bd8847c0d0ad32dd54fa14ba82e2aa43bd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with batch ids: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"9670a82925192a2bd6338d8dfff29e7ca21dbe5132f7ef0e36d47deb5cc35936"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders with textures: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70282098df28661f6fc864e3916e9fd1d426d0e9de49d2d02ebc77d868309ff"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders point cloud with rgba colors: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"b496032533234b656ad65b71f2b8ad9c7b03dd294e27db135fb4ac152b5d1d00"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders point cloud that is not defined relative to center: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"f118b7e393cdd28a6f024101a7bb73e9bacd011065363acdcbdd786da6b72f17"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders point cloud with batch table: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bde8c9dcaa6a5faf77b48d59dce737b9d281e94167c4406dac16455fd0c19a1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders point cloud with batch table that contains only JSON data: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"367dcfb2b44597bf5814891b5b0e24544cd0b84690e8c9c22a7c5cf1a9342108"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders point cloud with per-point properties: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd45ea971e97cd4eacc2ab18a07bffbbf330248f20823955aafbc48e7420711"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders glb content: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"16235854b03ea708ab475006aee4d8e616514956ce2a3da91a1fe35c0eeea849"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders glTF content: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1321}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc675e849a57c103eeb2d46438ff61fda70c900b8b22dcfc9e6da0e3e0dbbd08"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: destroys glTF content: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f4a0b27b67c808e1bfc03ef9acf2a2f10985cc4efcfe4ccb30119320ded22e9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: renders correctly when tileset starts hidden and tileset.preloadWhenHidden is true: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ac710a5b9ce88fd26360da1834413c79f91ff581e0b451aabf443e21d850937"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: does not render when tileset starts hidden and tileset.preloadWhenHidden is false: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1432}}}],"partialFingerprints":{"codehealthFindingId/v1":"063ba65ee298114d1842b936b5e48d3f957c01b23abbe15ab5b060a5dc081744"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: classifies 3D Tiles: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1837}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a576dab0f62c55655b657f6ebd96025ba80e4d10928b740d82e80b72de26746"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: classifies globe: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1854}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2c1e7cd0fceaa16ded345c55125d737c5273212fb15b64cce5a742dd07224d"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: classifies both 3D Tiles and globe: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/Model3DTileContentSpec.js"},"region":{"startLine":1870}}}],"partialFingerprints":{"codehealthFindingId/v1":"28c956006a671c6436ec93b3fba084f4f0b858cb9cf5d880a6be21fbe75a64bf"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Handles property textures that use multiple channels to represent higher-precision types: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/MetadataPipelineStageSpec.js"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac4e4b3460693a4e7612226d2de8198b74b2b366ed410f2d42412dc00dda87dd"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds material stage functions to the fragment shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/MaterialPipelineStageSpec.js"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d384741f58aa37767234ea52def971d57b412a054e882c86829f75b49e7e00e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds define to shader if material is double-sided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/MaterialPipelineStageSpec.js"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"085e4e2f083b65e5aee362b252dacc44aa4a6957d3f6fd9e54b0d3be12ade20f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds planar fill behind defines for primitives with behind: true: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/MaterialPipelineStageSpec.js"},"region":{"startLine":1077}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9bc1236e1eb4fa1b3e264331a5c936f3ecdc1bec9c053613a65fd03b372e46"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: supports unlit lighting: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/LightingPipelineStageSpec.js"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c9d1901b7eedbf8f1c7b760fe7ae5617c51ec4c61a51c438fb963869d626e2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: supports PBR lighting: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/LightingPipelineStageSpec.js"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3d99378103f9652421ea5263717e18fed4af0f0387f43afed5c03b63e91d36"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid format: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/I3dmLoaderSpec.js"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa86e720cd6c669166c0bc654b2f340ae0bee68c9ea57f7060de84ea42ffd915"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid version: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/I3dmLoaderSpec.js"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e6460dca50ae0ff066a8715716610a4159d292a5e1b455ad214de2c7f4ff17"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: uses flat varying qualifier for point primitive vertex attributes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/GeometryPipelineStageSpec.js"},"region":{"startLine":1251}}}],"partialFingerprints":{"codehealthFindingId/v1":"8490b63dc175e5fe5c46a51652fc0fdd04a84969afaa3579ef09f9d83d93d73e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds a dequantization function: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/DequantizationPipelineStageSpec.js"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5daa7d317fc380fa9fcd2809b7dcaa1704c0c7bcea8437f5d7c331d079ab05"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: sets defines in the shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a3d58f6aa5a87a1535498d020b7effceef76a75035ef94bf31a1eed60da4607"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds varying declarations from the custom shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"a08a9703f9d57ec347f4d96e748976999f4e36ab035da4cf12b10fbcc80a1196"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: generates shader code from built-in attributes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9d3a952b68d7865b5fb87ca3029dfafacaa524bfc1b91dba40bc4d63de138f1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: generates shader code for custom attributes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"464e4ef26df394bb10f269440b4e3119805484a6d6e20d1c921e8930e6561bb4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: treats COLOR attributes as vec4: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e89a2cedcde69923129e881a7c048173a66b7bece8bcc496bcd9a623da9fd3b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: only generates input lines for attributes that are used: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a43f96d72d2521e93708ab9f5db70fed5ac50e8a639a831c3089299b5179244"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: does not add positions in other coordinate systems if not needed: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"198580a7c5982c4d0287412d8aa763c0491cb46885e69b4a37be6bbf1bc3128e"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: configures positions in other coordinate systems when present in the shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"06daa665cf25a79b446ec6133c82de1c88b8e8888e75b134d427bbdc65c8620c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: infers default values for built-in attributes: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"60052712149ac3f98369de46d0354fb8553212e00432e276164bd424fb793f58"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: disables vertex shader if vertexShaderText is not provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"63df621537f2f350ac2747b7c4c1d18d8c5e91dae1ae81a77cddb6632fca4c2a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: disables fragment shader if fragmentShaderText is not provided: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CustomShaderPipelineStageSpec.js"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"2579c3cdda215062b2b883cac4e97777ab597cf3fd607021524de74daaf8d110"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds classification define to the shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/ClassificationPipelineStageSpec.js"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"a92c8ea5a5a0ea580160d6c1aecbd2ba2a8dd8c38cb14d2df1b6a393224726fe"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: adds shader functions: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/CPUStylingPipelineStageSpec.js"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c191326e2bc345b1c15bf7337884a4ea41feab64a46febad60878c6f8f1fc09"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: sets up batch textures from Model: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/BatchTexturePipelineStageSpec.js"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e609a989dd5ce169b5dc8f6939f853dccf59c70103a38c16f23bbdda40f1fe"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with invalid version: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/B3dmLoaderSpec.js"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"138749fe9498ccf70620ccb89fd24d4cfcc4b9bc3aa21383cf09d62ddfba78ef"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: throws with empty gltf: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/B3dmLoaderSpec.js"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b3ffd37a94674c40c1b0e33af1a5b7eb7482d97a43e0c6a55a4a7f05e4560f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: configures shader: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Scene/Model/AtmospherePipelineStageSpec.js"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"453b66eb75381740050cfa8475a68d3ce05205f2e5edd83f0bf1529622666f5c"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: can pass id string for container: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Widget/CesiumWidgetSpec.js"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"22571f71e1ef93bfab58c7fe4422de72ae3e6c40e507c6fbd19eb51784ba5d69"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: flyTo flies to imagery layer with default offset when options are not defined: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Specs/Widget/CesiumWidgetSpec.js"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"82fe94f612e28b68c8f48cba588ad3232393bc0b4ee9cdf3516a238429bf8de9"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Can create and destroy: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/Animation/AnimationSpec.js"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f043073871e37e7c647b07add15685cd753fd28d7a43f822ec03f33b77dc6f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Can create with container not in the DOM: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/Animation/AnimationSpec.js"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"957d67608178587722401563098ded3b56fecd8a1b642d59ba8aeb8777f4a506"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Can destroy without container ever being in the DOM: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/Animation/AnimationSpec.js"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c519848c3341f37056316aab4b1a3649a33b5565f92e67ab05dc517dff2748"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: moves camera when search command invoked: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/Geocoder/GeocoderViewModelSpec.js"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fa9295c636e010149d5be87d492ecdbcd4ba0949cb96cbf0619562c182476b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works in 3D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/HomeButton/HomeButtonViewModelSpec.js"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"6273825546db2b830ae3d32e5e5c7cccc31d36067579318efddc4fee0ad76d18"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works in 2D: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/HomeButton/HomeButtonViewModelSpec.js"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e18140be19ffe963893e3a3824993e184dca4dcbfa3d0e706fae2fe698d45b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works in Columbus View: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/HomeButton/HomeButtonViewModelSpec.js"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4945853f927451196f3dd5f7654f96658ca1482f7e45c373bc02117975579052"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: works while morphing: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/HomeButton/HomeButtonViewModelSpec.js"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1830427b07bf5c33b458493625da77a37e9787803a4597966bf77f4d3b6fe1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: can animate selection element: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Specs/SelectionIndicator/SelectionIndicatorViewModelSpec.js"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9dcbed690242614544ab7ca2d8c4092c2a36ef72e57056a7a99ade35e0bb1f7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/GlobeSurfaceTileProvider.js: packages/engine/Source/Scene/GlobeSurfaceTileProvider.js changed 24 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 103 in GlobeSurfaceTileProvider.addDrawCommandsForTile at line 2510. 4 of those changes were fix/bug commits, and the other 20 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/GlobeSurfaceTileProvider.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":2510}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd898f8402b06d2eefedd40ac7bd241b3682688e37e4cb96ad6f5b46381463f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/GlobeSurfaceShaderSet.js: packages/engine/Source/Scene/GlobeSurfaceShaderSet.js changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 84 in GlobeSurfaceShaderSet.getShaderProgram at line 105. 2 of those changes were fix/bug commits, and the other 9 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/GlobeSurfaceShaderSet.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceShaderSet.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"80782ec80867155f40e6ed59091b51a281400e82e155462e7f103a42ff8db073"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/Model/Model.js: packages/engine/Source/Scene/Model/Model.js changed 36 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in Model.Model.update at line 2001. 4 of those changes were fix/bug commits, and the other 32 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/Model/Model.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b89130cd4bba8556c9e599e4444d2f948ac020db6f7a53a8c532d85810980a6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Core/VectorPipeline.js: packages/engine/Source/Core/VectorPipeline.js changed 37 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in VectorPipeline._clipRingToRect at line 1072. 10 of those changes were fix/bug commits, and the other 27 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Core/VectorPipeline.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VectorPipeline.js"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb6ec5cac4760180a13b2171d08746e456adb4eedbe22ef770931a2557a706af"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: gulpfile.js: gulpfile.js changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in gulpfile.test at line 833. 1 of those changes was a fix/bug commit, and the other 19 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- gulpfile.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f97324b295e723d5a89fc802ee3de27479bcf1c1038a3ef30f27726aafe9a2f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/sandcastle/src/copilot/ChatPanel.tsx: packages/sandcastle/src/copilot/ChatPanel.tsx changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 114 in ChatPanel.ChatPanel at line 152. 1 of those changes was a fix/bug commit, and the other 2 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/sandcastle/src/copilot/ChatPanel.tsx\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ChatPanel.tsx"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"94e013568a4ca0f3849b23878521c036dd4c90be0f4e3c937cebf89d99cb1872"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/renderBufferPolylineCollection.js: packages/engine/Source/Scene/renderBufferPolylineCollection.js changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 45 in renderBufferPolylineCollection.renderBufferPolylineCollection at line 116. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/renderBufferPolylineCollection.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolylineCollection.js"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"861a6e862439d33d9891b5286f19f2a7c4c40bc09033f43f32ae096b2967d29b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/renderBufferPolygonCollection.js: packages/engine/Source/Scene/renderBufferPolygonCollection.js changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 39 in renderBufferPolygonCollection.renderBufferPolygonCollection at line 90. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/renderBufferPolygonCollection.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPolygonCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0ba2d2e6b32ac92204d79fde242c76b0678a077367b7bf045afeba95810070"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/renderBufferPointCollection.js: packages/engine/Source/Scene/renderBufferPointCollection.js changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 38 in renderBufferPointCollection.renderBufferPointCollection at line 90. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/renderBufferPointCollection.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPointCollection.js"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"602628a565a7f8424643891240f080d13f20992e5097c376ead7b3a492c1e437"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/sandcastle/src/App.tsx: packages/sandcastle/src/App.tsx changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 57 in App.App at line 123. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/sandcastle/src/App.tsx\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c5302bcbc80b9171a502f4e366081e75353e3380d201341662cea637482636"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/Cesium3DTile.js: packages/engine/Source/Scene/Cesium3DTile.js changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in Cesium3DTile.Cesium3DTile at line 63. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/Cesium3DTile.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b990941af25588df97c1ab0943ea152b1b823afaaaa9af8073b531a501caae"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js: packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in ModelRuntimePrimitive.ModelRuntimePrimitive.configurePipeline at line 194. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f62f1df37e4f7079400fcdf05d319e5fe0a15d144e421128bcfbcf56b496b4b6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/sandcastle/gallery/hybrid-snapping-dev/main.js: packages/sandcastle/gallery/hybrid-snapping-dev/main.js changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in main.viewer.screenSpaceEventHandler.setInputAction() at line 235. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/sandcastle/gallery/hybrid-snapping-dev/main.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/hybrid-snapping-dev/main.js"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"5426864e25dc115162a0166facc43421398033d09ab7660fd26b9fe22c2c72a8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts: packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 53 in useToolChainExecution.useToolChainExecution at line 62. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc10ab0bc4621b20d3413621eff3c4034ee6c31e4d09839ce5c560aa52b31225"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/Model/Model3DTileContent.js: packages/engine/Source/Scene/Model/Model3DTileContent.js changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in Model3DTileContent.update at line 245. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/Model/Model3DTileContent.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model3DTileContent.js"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5dbd6880f18857f9fe7c68d8794718efbe84dbf0be471cc388ca32b6c19e03a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/QuadtreePrimitive.js: packages/engine/Source/Scene/QuadtreePrimitive.js changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in QuadtreePrimitive.updateHeights at line 1395. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/QuadtreePrimitive.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"8733974b8aa71d83280fdd7ce3e7c083f30c0358772db8a1f842ee8ddad9b4d7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/sandcastle/src/copilot/ApiKeyDialog.tsx: packages/sandcastle/src/copilot/ApiKeyDialog.tsx changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 32 in ApiKeyDialog.ApiKeyDialogBody at line 45. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/sandcastle/src/copilot/ApiKeyDialog.tsx\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ApiKeyDialog.tsx"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f7ec9b07d0bf6e5929d1a835f7555dcb4f75205c0a71c4e50004c7fc77a0922"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: packages/engine/Source/Scene/PostProcessStage.js: packages/engine/Source/Scene/PostProcessStage.js changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in PostProcessStage.createSelectedTexture at line 779. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-03..2026-10-01, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-03 15:11:57 -04:00\u0027 --until=\u00272026-10-01 15:11:57 -04:00\u0027 --full-history --no-merges -- packages/engine/Source/Scene/PostProcessStage.js\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PostProcessStage.js"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb01f72524a2b52b8adfd5b6f53e5642053075edebbea3497066d436dca5137"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 26 significant file(s) lose their only recent owner: packages/core/Source/Quaternion.js, packages/engine/Source/Scene/VoxelEllipsoidShape.js, packages/engine/Source/Scene/VoxelCylinderShape.js, packages/engine/Source/Scene/Cesium3DTilesVoxelProvider.js, packages/core/Source/EllipsoidalOccluder.js, packages/engine/Source/Core/TerrainProvider.js, packages/core/Source/PolygonPipeline.js, packages/core/Source/PolylinePipeline.js (\u002B18 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3e536ad83098468ae6899399c5f66894e24894ac97620c1ecf13237465576e6e"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 18 significant file(s) lose their only recent owner: packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts, packages/sandcastle/src/copilot/ai/diff/DiffMatcher.ts, packages/sandcastle/src/copilot/hooks/useToolChainExecution.ts, packages/sandcastle/src/copilot/ApiKeyDialog.tsx, packages/sandcastle/src/copilot/ai/clients/AnthropicClient.ts, packages/sandcastle/src/copilot/ai/prompts/PromptBuilder.ts, packages/sandcastle/src/copilot/ChatMessage.tsx, packages/sandcastle/src/copilot/ai/clients/AIClientFactory.ts (\u002B10 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1505dee191290f6c7d3a84c60fe7dca37113bb60f73d529c53f7035b401e8bcc"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 11 significant file(s) lose their only recent owner: packages/sandcastle/gallery/hybrid-snapping-dev/main.js, packages/engine/Source/Core/IonSnapService.js, packages/sandcastle/gallery/multifrustum-snapping-dev/main.js, packages/engine/Source/Scene/Snapping.js, packages/sandcastle/gallery/ion-snapping-dev/main.js, packages/sandcastle/gallery/gltf-planar-fill-dev/main.js, packages/sandcastle/gallery/client-side-snapping-dev/main.js, packages/engine/Source/Scene/PlanarFillIdFramebuffer.js (\u002B3 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d29c828aa77d30745e07af459b327ef0482ea76458417789445b1cc2f6bc1a13"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #4: If anonymized user #4 becomes unavailable, 11 significant file(s) lose their only recent owner: packages/engine/Source/Scene/Cesium3DTileFeature.js, packages/sandcastle/gallery/ground-primitive-materials-dev/main.js, packages/engine/Source/Core/WebMercatorTilingScheme.js, packages/engine/Source/Scene/Cesium3DTileContent.js, packages/engine/Source/Scene/BufferPrimitive.js, packages/sandcastle/gallery/3d-models-node-explorer-dev/main.js, packages/engine/Source/Core/TilingScheme.js, packages/engine/Source/Scene/BufferPrimitiveMaterial.js (\u002B3 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ae0a4337aa36d86de87bcfd187fb1ed8dedf592c1246807541986bbf00d508b1"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #5: If anonymized user #5 becomes unavailable, 10 significant file(s) lose their only recent owner: packages/engine/Source/Scene/MetadataClassProperty.js, packages/engine/Source/Scene/Model/MetadataPipelineStage.js, packages/engine/Source/Scene/Model/CustomShaderPipelineStage.js, packages/engine/Source/Scene/PropertyTable.js, packages/engine/Source/Scene/MetadataComponentType.js, packages/engine/Source/Scene/parseStructuralMetadata.js, packages/engine/Source/Scene/Cesium3DTilesetBaseTraversal.js, packages/engine/Source/Scene/StructuralMetadata.js (\u002B2 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dda58b5391a48d55576e1a97fb53a42d7278329d99651c5bc10c79cce8b9d8bd"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #6: If anonymized user #6 becomes unavailable, 7 significant file(s) lose their only recent owner: packages/widgets/Source/BaseLayerPicker/createDefaultImageryProviderViewModels.js, packages/engine/Source/Scene/CubeMapPanorama.js, packages/sandcastle/gallery/google-streetview-panorama/main.js, packages/engine/Source/Scene/GoogleStreetViewCubeMapPanoramaProvider.js, packages/engine/Source/Scene/EquirectangularPanorama.js, packages/sandcastle/gallery/panorama/main.js, packages/engine/Source/Core/Credit.js. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"27ce42a2a55865afad9dd2ab5647ac66e7d5a9683b46c68f7cb83625bcacf8fc"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #7: If anonymized user #7 becomes unavailable, 10 significant file(s) lose their only recent owner: packages/engine/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js, packages/engine/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js, packages/engine/Source/Scene/Controllers/ScreenSpaceMapCameraController.js, packages/engine/Source/Core/Iau2006XysData.js, packages/engine/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js, packages/engine/Source/Scene/Controllers/ScreenSpaceInputBindings.js, packages/engine/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js, packages/engine/Source/Scene/Controllers/defaultPickWorldPosition.js (\u002B2 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e9c59a5e1b0cda656cd16bd2fd632d3cbfd375144e9f0913a1f8bbac764e2df9"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #8: If anonymized user #8 becomes unavailable, 6 significant file(s) lose their only recent owner: packages/engine/Source/Scene/Model/ModelPrimitiveImagery.js, packages/engine/Source/Scene/GroundPolylinePrimitive.js, packages/engine/Source/Scene/Model/ModelImageryMapping.js, packages/engine/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js, packages/engine/Source/Scene/MetadataPicking.js, packages/engine/Source/Scene/Model/ModelImagery.js. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d12ceab53949c814693b2696bb599f09805d70bb996462853174302c95f4f3f2"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #9: If anonymized user #9 becomes unavailable, 6 significant file(s) lose their only recent owner: packages/engine/Source/Scene/buildVectorGltfFromMVT.js, packages/engine/Source/Scene/decodeMVT.js, packages/engine/Source/Scene/EdgeFramebuffer.js, packages/engine/Source/Scene/Model/ModelVectorLookupPipelineStage.js, packages/engine/Source/Scene/MVTDataProvider.js, packages/engine/Source/Scene/preprocess3DTileContent.js. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e2448dcb60675c3379f0b4da54a4322d28316e5972ab1db19def9693961aed5a"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #10: If anonymized user #10 becomes unavailable, 5 significant file(s) lose their only recent owner: packages/engine/Source/DataSources/PathVisualizer.js, packages/sandcastle/gallery/time-dependent-path-graphics/main.js, packages/engine/Source/DataSources/PathGraphics.js, packages/sandcastle/gallery/relative-paths/main.js, packages/sandcastle/gallery/constant-lod-dev/main.js. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a0d3af26c8c87433a87d6852b4359da8aa01feabc4c3697f1050297f9bb4aa6"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #11: If anonymized user #11 becomes unavailable, 3 significant file(s) lose their only recent owner: packages/sandcastle/gallery/aec-elements-api-query/main.js, packages/sandcastle/gallery/aec-tileset-metadata-filtering/main.js, packages/sandcastle/gallery/aec-snapping/main.js. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6e997b461a48fd66f6e1f1cd6ec37816f4114638190a50b5ef2fd06893dc8fe4"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #12: If anonymized user #12 becomes unavailable, 3 significant file(s) lose their only recent owner: packages/sandcastle/src/Bucket.tsx, packages/sandcastle/src/ViewerConsoleStack.tsx, packages/sandcastle/src/setupSandcastleSnippets.ts. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e1342995a0ad31518b2cedde9f2735a4df0e9d524d130777d9d9e3ceae02c0fa"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 8 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (129 single-owned of 990 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 990 of the 1616 production source files in this repository met that bar). They are anonymized user #13 (2 file(s)), anonymized user #14 (2 file(s)), anonymized user #15 (2 file(s)), anonymized user #16 (1 file(s)), anonymized user #17 (1 file(s)), anonymized user #18 (1 file(s)) (\u002B2 more) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: determine if we need this lib or can implement ourselves. It\u0027s a little outdated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/ConsoleMirror.tsx"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a008123a9dae98099e08977200594974e371ef55000a3c6ffd8b9c391212ecb"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D26","level":"note","message":{"text":"Split packages/engine: At 290k LoC this is a massive sprawling engine whose listed namespaces (Scene/Model/GltfPipeline, ThirdParty) are all unrelated parts of one system. Suggested: split into Scene/Model and ThirdParty namespaces"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9139b252bdedbc54619a03902f699cbbd9a0fe8f8f56a2fd331ab48aaaebf234"}},{"ruleId":"D26","level":"note","message":{"text":"Split packages/sandcastle: At 54k LoC this is a large test framework whose namespaces (copilot/ai, copilot/hooks) are all unrelated. Suggested: split into copilot/ai and copilot/hooks namespaces"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bea604ff6b2b94dc5a4fb19d6fccf7dad9d335bc97ed5ac3d3611fd4eed1870d"}},{"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":"45036347f496992d8d6768a8b073e0d23fe45c94e052c0fab9732fd587b57169"},"properties":{"commitSha":"1fb97103e58e955fea9c1cfe4378e71101fffb53"}},{"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":"1eaa19942fffa68cf52d4b583fbbefb66cec5017912639adb96f94a6e6c3e448"},"properties":{"commitSha":"d26ccfea38dcf4623cf5da3faca141913c64cfe1"}},{"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":"b24fd93216e50477da35843406c1e0c6cb8147f93e6259e948b28bb0204c2124"},"properties":{"commitSha":"3e1792a179ec9ff7fea398992566c65279d65bc8"}},{"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":"3745d72ed4842e6e0644b94200b805abd10a9a33aec86d7f1ca10be7179eb679"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"3af18b04aa2a32de5290268b93e1ae58dff3c4cb6d328963d3f47418ab36ac49"},"properties":{"commitSha":"0e749b2c333ee9d26f02d7e54f44f32619bb56e9"}},{"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":"299fdb521ee2942e32cd6d9c1cbd0311b877095e54bfd2130c4c9b2860e31d38"},"properties":{"commitSha":"febf5696a7fd8d54bdf310c68e70b1fe0dd0281c"}},{"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":"8dbd3672acd03e8dd13b8b9cbdfe2ecdfc086af4038b00f2fcd2b6b017ad0921"},"properties":{"commitSha":"3e1792a179ec9ff7fea398992566c65279d65bc8"}},{"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":"67a37b69d553bc930700a509a61f9918bac013d944d9bcb4070e264a33031435"},"properties":{"commitSha":"dd6e212c950f1da7b781a6a974fc1c84ec945d40"}},{"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":"77ff4cdb3dbc4ad236b8ccd19da59fc089e60f72bec1e42180716085e832415a"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"68fc70ed1f4316a1d6cb16c550b56603192855c747cf060bc008d7f87d820038"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"0c30f5701b05e5a51e55c9f76c14d42aaa0ecb183ed452fabe4a37df7ad538d4"},"properties":{"commitSha":"3e1792a179ec9ff7fea398992566c65279d65bc8"}},{"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":"0d6134ef45301533a07fef92020fa4553df9f2f42c44aa9eca02146b6edb5e84"},"properties":{"commitSha":"1d56c4f23f2c90b3d9afea687cf17a21f183e6cf"}},{"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":"649bae805f11bd19c00bf3e66caa2a9e90137b84dafa91cdfea39c98f790eef5"},"properties":{"commitSha":"0e749b2c333ee9d26f02d7e54f44f32619bb56e9"}},{"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":"0ae2a633d7c37a927b0a3020d9ba7da982069affe0db0624fd4e68aa4657dc21"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"f7c4bafb82d99b88a37822d20c5f83351ce472aff6063629efed0035461b1ee6"},"properties":{"commitSha":"0e749b2c333ee9d26f02d7e54f44f32619bb56e9"}},{"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":"aa089b18262cb861fc037041eaae91d7b7144d852f4ea291392549faf4de5343"},"properties":{"commitSha":"3e1792a179ec9ff7fea398992566c65279d65bc8"}},{"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":"c397589b7013af194df4a8c3ad6a60eef955bdc5921c753afcbb3e024cfde353"},"properties":{"commitSha":"e4e7c782949ff55eb33800987a1114585ed3aa8b"}},{"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":"5d67045cd7fc6d5e98e29299d45630e7d8686b3833e54aee9fba903aef8b38e3"},"properties":{"commitSha":"cb429c227858c917313cdd5b3baa29568fc68dce"}},{"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":"91619ca89029e06836b06c75a8a19e07f0cd8dcb0dafa6483a62772258e59f07"},"properties":{"commitSha":"7fa692a742e8cf8d6b23c70a2eb17e2ed6ae57e1"}},{"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":"fadd94717fe8dce70a7efda2f5e3a66ecc57e24b98088579646b132eeeeefd88"},"properties":{"commitSha":"eb1db947157761459ee329e85bd79531c56f1b25"}},{"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":"d13b8414b9fbb344f2ae7397fa42cfb5e8737edb65004f75231023f60e852d1e"},"properties":{"commitSha":"4fc8b9beb04c3014c10ede64a90561ed8c54c979"}},{"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":"ee2243c0d6b3f6f57f903a26ad6956dc4200c5f0f66862046e5c7534529fa530"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"92cb1494c6794793e028c9426d747619555956b6fd5a3661c71634264b5e2abe"},"properties":{"commitSha":"0e749b2c333ee9d26f02d7e54f44f32619bb56e9"}},{"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":"c1dcfd8ef78fc1998e8f1166c5f94a1a1c545117fce41b51f2d5a939dfb2a912"},"properties":{"commitSha":"8cd1ff17a14b3ac0734efb53482cc608d476e6cb"}},{"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":"be3dd7f6d810280a29eceac514efe95f303aea199840941a3d8b15505edd0138"},"properties":{"commitSha":"0e749b2c333ee9d26f02d7e54f44f32619bb56e9"}},{"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":"a233396c778dfe9d4c956fd138079dd18e9e11fe7a9b32b4ccf052f3e2347367"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"f1b21b1e7029c61cae7234a633ba380944b914c660577f9bbc530b69c346d035"},"properties":{"commitSha":"d123bee64adf9d82a088ccc324bd47c0f584ddf4"}},{"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":"6d77548156a19e8f8197d85a86959c7579b8062088a27c82791367d588f89c4a"},"properties":{"commitSha":"388869ec7b0ce7cb6026f91287a50e83df74f1b5"}},{"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":"4c7c3bf6115ee1b95954d045fbd540b1a862a57b09f58ff1ff7160dfada13257"},"properties":{"commitSha":"eb07e449f21b8fbd54bc79d44eaa7e598faaf251"}},{"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":"4da69b9afb75ba9842aacfbd2e5f39333eb8e282bdace49249ea2acfedfc333a"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"e787559e873ff8ccf463ef3cd5de2de04c71a94862bef2031d5a7223c436bddb"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"ba880f36441ec348b5d363f1785c86b46774db0de4daf6d9e0e9d6ebd0ea76bf"},"properties":{"commitSha":"0e749b2c333ee9d26f02d7e54f44f32619bb56e9"}},{"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":"37f9bad14454de91c53a757201c2dafaa95783ad1171a0dcca87d28559f42491"},"properties":{"commitSha":"095e152081619c7118d49f412f59006895dfb131"}},{"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":"1a7a98741fe5976b356cad5db3c7fcb08821a3dbf973313d8727da12725ec96f"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"0a67f82e6294bef865dec3215ce6ff2e6ba9abd33c2f4989a0e21ac59cd8ebff"},"properties":{"commitSha":"9c054da7fc371e4863ece12b74763a575c1a9775"}},{"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":"4e5942671fef08131e2524b456f0607af1945f5aabb6f220f45e7abf6da55096"},"properties":{"commitSha":"eca11056dcbebd0ce86c40c713a31bfdf9299357"}},{"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":"0689c687189131716a0b3bdc4d7e5e60309056d3c6d36e044e630c65875dd20d"},"properties":{"commitSha":"d8be8cf791b80867202b1eeb96370111797bac9e"}},{"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":"07ae56be5c615ae16ec3abc6d3ecdedd0d398c658afc33d6a1a938c7333f5244"},"properties":{"commitSha":"e754963da5d4c97e582100faac5498c7ad11dd1f"}},{"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":"341b0b4814cd9ee4ea3b3a2ce27b4d93c9daae0f80bd99a80bad507a60afe508"},"properties":{"commitSha":"e754963da5d4c97e582100faac5498c7ad11dd1f"}},{"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":"5de265c7b072a120ba0359ffe6f0af285cef165094b9910e79e7b41a538865ca"},"properties":{"commitSha":"3e1792a179ec9ff7fea398992566c65279d65bc8"}},{"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":"997ffcd3f17c9ffd7f8836e6bb463fd20d41612904b08e6ffd790c657d638973"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"7b5b97b132024ecda0bd91dd5182dd2f364b32710f1fd367be1ede716d7598ce"},"properties":{"commitSha":"0e749b2c333ee9d26f02d7e54f44f32619bb56e9"}},{"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":"209dd48f382f369759115384059f09bda7c66e90980e48a59b0c7b825104b485"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"e2a12ae1cd66ad60be6a6ad73b647164b7ea07c30d2d5e713b9d87c1376501d0"},"properties":{"commitSha":"09a8fd21677053180ea3ee1f501bc11f4728362c"}},{"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":"43b25e920cefa9178c93e74d771996710de3b028a8315a570dfa9e0528217d05"},"properties":{"commitSha":"e31a6428092ab40079d2407ea80b925e7141d5f9"}},{"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":"eeac6cceba9425719828e4ae2a3779170e5e3e7aa5a56b23d169a4eb5a203243"},"properties":{"commitSha":"06b7fb2121cac77c33170f5f1e5e9de5fdbeb119"}},{"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":"255d647a4a2915c8d6778c34c543ef49dcba51c99cc891ea7f571b843ddeebee"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"0aee68e55a05f84a5a08db3c2f6e400bf161ec04167cc7eb30b89861d6d07a33"},"properties":{"commitSha":"1b3a04fad3ee29d750808ac51138e411b4d2caff"}},{"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":"e90bbd2678f82b99d588ee830fa1cabd310c883f69889a586871955b6f9bca94"},"properties":{"commitSha":"b371c27fddb1a45a757c0dd18a51f3258bbcd501"}},{"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":"b979a712ddafa0c1e743a4631d000fa416e35a073fa0a76ef6b03121af61895c"},"properties":{"commitSha":"9252ad5bc57c21ee1bf3fa6fc44e667089849da6"}},{"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":"238af1cb37ff0a622a0378b0b65e69aae5447de16a6282ee90def0beac8f6a97"},"properties":{"commitSha":"9252ad5bc57c21ee1bf3fa6fc44e667089849da6"}},{"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":"6c9dcdb284dab383f8eef3232aff6e0312b5446d8f37e93f7ebec273c9bfd1de"},"properties":{"commitSha":"9f116573ee0bfb9ad9c2d3ea7b7abe2bf39f15ec"}},{"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":"dbc3d0a6467ab1f6713a73ecd56289fa258e3f73f746c26023d956cb9037ae6b"},"properties":{"commitSha":"9bac174f8a38d22b7f1be4b4f6af48425932e0ad"}},{"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":"d922e3a8eae833e80021c9ad05e06fb16c13a5e7a22ef304650c841df5178919"},"properties":{"commitSha":"82600fe8836fb2404ea9612dd66eb10535feaa2e"}},{"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":"d2efbe5407d1c685418288e0f2f2c21c4127923b593cc1a3526c10220d6b23da"},"properties":{"commitSha":"1d575f87a7a5c1c435f2731f9a8035764929ba87"}},{"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":"94c05e544fd0db062a450164726cc6ac2758f715d5acc6290f9b54a9671577b1"},"properties":{"commitSha":"0e566d0f25a68c2bab91f98c319c74ce63609c93"}},{"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":"703e09d29d31203ca2a692b52140b05c5552d81b52e3ddfdb1caefb18c9d8624"},"properties":{"commitSha":"b6284468459bb0a6bd64dc4be1a1497caa59f1fd"}},{"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":"7bc7b7d4df853171a322145bce27d4009db2257c7704a007adf8b762a731430c"},"properties":{"commitSha":"efe698ea9ec8f64e850223f781fd878db299ac73"}},{"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":"d056e8b78f1103be1e052c39008c259a62d34e9855e437d1ca76e4911db3f940"},"properties":{"commitSha":"077042201120b5dd161a30800ba242f2bd81e845"}},{"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":"3339da73ff7eca5f6eb86d8aea9023f2bd639f95695e34773739a0b1e40b0aa3"},"properties":{"commitSha":"d66c83762603207267774897ecf0b6d9f189eecb"}},{"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":"1ae6737bac81f570d9a6f44901a93196c30b034e84ff30a58859555a98c7a368"},"properties":{"commitSha":"05f812d791e80f2f9d5cdba2fc9bc2827e1a3083"}},{"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":"8f37ec86b30b3e3a157238cb5546fd9107ee233882128efa7c1f64b1507e27a3"},"properties":{"commitSha":"64f52c8773abf5feb730a1e24bc16101636c5d26"}},{"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":"c1088be54da59b4d095c0372605d77d305ae77d66e1c7c0a5521e81e17ca8aeb"},"properties":{"commitSha":"f73c78a27a3af97df7893853f61602866e541b53"}},{"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":"66aa5fee991a15593c158f7ec4105e4c0bf8fa51a3a0f0fd58f8208d9b642750"},"properties":{"commitSha":"44a266295134b88c3d3dadf0d1bba3ece61d2136"}},{"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":"78edc6dda75b5581a84b6e1e7daf25d0ebc5db151329d55f172875c294b12b1e"},"properties":{"commitSha":"4b7b0ea6f580d943f8481e61b9c8dc979eb5d5d4"}},{"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":"165bc696e0034986156691d5a7d57be1982958e5f667825a1df33c6e5461d315"},"properties":{"commitSha":"c699d4ba1904d0d4f14d9cb9c68138b7565d408f"}},{"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":"2e8c547d5cec2f67c84da4de900f5d555a5f3197dac3af0192aabe2d632e4d0b"},"properties":{"commitSha":"aa2c569b8d62ce7f302af941518a63e4c613b493"}},{"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":"c7bb1ed464beead8767783d3be823f788aa0613b449b510f2ebf956fd2c9ec76"},"properties":{"commitSha":"3e1792a179ec9ff7fea398992566c65279d65bc8"}},{"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":"464b5714d6fef9289c52231c9a981dfa56ba6474daee28994936fe98cda978e9"},"properties":{"commitSha":"d9824196df7a6603ad2c40dbe81ea426a4407e35"}},{"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":"48b0536e1162173289d679078b7a359393de97ca8109bb6400f28d99104d351f"},"properties":{"commitSha":"8c4efd7110ccdd2b9caec5f76b10dbfefa0ce9f8"}},{"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":"9cce8cec8b67d38fa3c89d172cc439ac91c5a9f1c92002fec03c38850923d553"},"properties":{"commitSha":"ff43c907c0266bc5a6374439ccb3e4bceb855c45"}},{"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":"d5df4d185611745a300ef8002ae879d72527ee54ca3b4e220b3f6c94b4052045"},"properties":{"commitSha":"421e5dda69820dd7e9a947f5644567325368d2d7"}},{"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":"ea11e79fb3fc7b066bd82ef1354ce5d0b85d3330e015ef63432c0ac4adb3ca75"},"properties":{"commitSha":"0f6db77484718c2c706d4922a3118b02b40505f3"}},{"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":"8ba16e12b86df6e1a6d9313324ef267d132a22418e3ca1503c60a7ae773aea0e"},"properties":{"commitSha":"d9824196df7a6603ad2c40dbe81ea426a4407e35"}},{"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":"977fc0b51b5a51e0a8a5393b29aae2da5a025c159424d290b7a8e406cc3867b2"},"properties":{"commitSha":"8c4efd7110ccdd2b9caec5f76b10dbfefa0ce9f8"}},{"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":"7596d7d343336bc9e87147cff1e9db2d4cdf2b506e4aaf626522f25fb347a865"},"properties":{"commitSha":"ff43c907c0266bc5a6374439ccb3e4bceb855c45"}},{"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":"a8de42c8f6d01834d5bc86107270ef3688cbe30142f10602be25ce62b1bf0409"},"properties":{"commitSha":"2abb6e62ba81aeee8ed32d4d5450d5a8a3483afa"}},{"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":"a08d664c0a2e54c365d259d17369013a29984ac69d37e3d6c66a19078d9f8a8c"},"properties":{"commitSha":"2abb6e62ba81aeee8ed32d4d5450d5a8a3483afa"}},{"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":"b7dfe57cce968e088e28415a8c6f8e098e3f741d339527413ad450529964632c"},"properties":{"commitSha":"2abb6e62ba81aeee8ed32d4d5450d5a8a3483afa"}},{"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":"9f6292f460ee7d2b6998316f85a482fa84bb3a12ad1a44038d835dda7140cf03"},"properties":{"commitSha":"2abb6e62ba81aeee8ed32d4d5450d5a8a3483afa"}},{"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":"79bbfd57fe944aed582e9b5690dbfc37220a3ac2b86521203abbe37918be62d8"},"properties":{"commitSha":"eac6d0fdf1ee2e64aec89fc82a7249b7d6d2ca35"}},{"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":"138d81819d8c5a74f41086be4141d942b55f91539411733adcc235d5b66583a4"},"properties":{"commitSha":"05d719bd80448f929f81711215e3cd0b8306ef8f"}},{"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":"e85dd612dc0b18ade6aed21f70cb3c7f83b418843b2c013e5a173d3c2e566448"},"properties":{"commitSha":"55c6f0b2080788bd5ddaf464b39bae92bc249e04"}},{"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":"43ea0e9699b2330554e8765550bad54f53788ac3b3dffbf24bf9dbb89bf5dccd"},"properties":{"commitSha":"a6b539d131a2fc07a7f934f3529aedde16f9f6a8"}},{"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":"7fdeaa55f3e2d8dc45a51cfbf16a511d9fbfee6ab3c740a13fb9c2e4aac17cae"},"properties":{"commitSha":"e7f108a158225db603609d985de314bca7e86236"}},{"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":"eb231ccd28bc521f46743bdba680e553ca732a31ac71b49a17ad9acab53c2324"},"properties":{"commitSha":"551eadf4dc6638396547b84515f35dd397d6e561"}},{"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":"86d580cae2f77c085c68ddfac87bf76699e1ef9558e23571eb4f1f9a8472fb92"},"properties":{"commitSha":"dcea16aec567b0e22cb50e44beb58e83619db3b6"}},{"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":"14628e2ec7f7dc66434b2b0d28f9e37c5a7f5f3ec02943fd9ab8b2ae48e2edd8"},"properties":{"commitSha":"4d5167b9ddf5eb0d4a0c75b229e50b7eeb550050"}},{"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":"621acaa8b1bd269a95999f868782668b22c36276532a8e5f5b968b71a4252e5c"},"properties":{"commitSha":"7f457b36abcb04102e4623c381def7e6f658f06d"}},{"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":"0e76d4d95abc6f631bccdcff2c0e1b7225244c2a2695a4bdf6df74d7b0924207"},"properties":{"commitSha":"81b89d8e20cb6f28943f9ed84b579d4a8b70fed7"}},{"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":"0fe2d080e5c2cc5c271cac723b5a66e58aa504f756ed552aabed2e18937989f2"},"properties":{"commitSha":"c21baa46c7d4e468e53c1abfc8cf90b367776048"}},{"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":"a955bb957fc51f7cfe72fe9b9426c3b833c7ee6d67d4007e00a2225852798dca"},"properties":{"commitSha":"3e39ee6cfa87c791e57cf37b115b1e639f2fa00e"}},{"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":"412d2892fe114204345ac573951b941b8e51798c835ac965ce1c4723c14d5e41"},"properties":{"commitSha":"44ea453a28fc03885357c2d75ad6bd26f80da307"}},{"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":"15c6b3c88522d02f335784fd0fab7cb546ecf281099b00887665c08d6f0e17a6"},"properties":{"commitSha":"b410ee4364f22d46abe64dc449ec21d290e58280"}},{"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":"b042cee3baa2f70349c33d24cca064259fb51f57195e794510e9929aab8843f4"},"properties":{"commitSha":"ba914d5d232328cbb1759e8443cd44d2ab7747ed"}},{"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":"0cd0e726c19902ab603201f56a8241671299af3fbe71dc4e3ede4889810393b2"},"properties":{"commitSha":"e5a9d52cfae883adc3072a8f266e77c382502933"}},{"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":"8a599d58a7904dcccef1d029625112917cd45840d59cff23e64039a4df056b23"},"properties":{"commitSha":"b7e61318998ac250b87cdab65094d0abd462fb42"}},{"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":"b158fe71a940ddace3b3aaeb39bbd5748c2067e30449988d63404042b04c482d"},"properties":{"commitSha":"ef5a254dbf17622bb56ce49ce1f1bc4190fe39a2"}},{"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":"af700973b7a58ef3805c3654d255a2c7b5c30578c22f4a521dd231ad07b8e786"},"properties":{"commitSha":"35094c427bd1ebbf42710aff9da91c4e7decc6ea"}},{"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":"ec9899cb99478571438308d6371ff6a47163e0581e0c5814e5f045fcf7bc9670"},"properties":{"commitSha":"cb869a26789e43c2b7e2af42acb5c276ec979239"}},{"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":"73f13bdf2117285b7e76f5d8fc58c712cf315b6f46181535392da180fb9c9bb4"},"properties":{"commitSha":"291d2f7678fb7134f251b960c73bc6792e07b618"}},{"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":"51d1d1484757337488808e9582a1e89b0cca1b47e3a50a67f07b67e6c73b9de4"},"properties":{"commitSha":"7c5b7dab2bfbfb97c103e1147ae2922c78fda9dd"}},{"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":"b96ebe80322d48d5b4303301a2ad1ac1719510173c5fb265535f9fa7c7391023"},"properties":{"commitSha":"b1f5323e4f893b4c87ebead5581171fdf0905986"}},{"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":"f883e39a6abf9007e6e30610070f87ec9425902b32f20b4255f2d071108ef188"},"properties":{"commitSha":"50b3a724e5197b240efe9a9e96f4897d36557c5c"}},{"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":"ab9cd87b565a7735f69324ada6294bb76b24c0afbd2b99d260c1b771a7eb065e"},"properties":{"commitSha":"3dd7decda1a2392437b56d341999640510d3c8a7"}},{"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":"4178ea9b1d65b8d3561e978c06ffb6de7d852ab59939441950e9658926516aa9"},"properties":{"commitSha":"ecdd5be7f5e79c91ded41a35dce1708083847b24"}},{"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":"f7843b26c11c48c79a2436d215dee019ab531a122a87bd4dbc63e707ae18a025"},"properties":{"commitSha":"5b16f3c75714119c0103157e3a58885572d5dbe6"}},{"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":"04806d254ad87b57527955b558c1ea6d1cdfad081a57cc8e1c1792f2a8a3945e"},"properties":{"commitSha":"b6f82bc95f5c95ef4bb0c33aa67b4d3b1393f881"}},{"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":"99a49cba736312652e98dc6ec98acbbe3a73cdf3f79e4ec6724545ec543c8aca"},"properties":{"commitSha":"9382eccf1a0e72edb73eba17a7162560f15d62e8"}},{"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":"fd6d84377db98e1982ff21ec1ac642c37f7b9f7021164a2272941dab763dbe6b"},"properties":{"commitSha":"ec6eed8631cc09752edefd7ab4c50379ae4f2aec"}},{"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":"b8cdb251c060437eb0d12690213697127975cd9e5bbae6583b33dfd170891c00"},"properties":{"commitSha":"2fd0e8f7e4212bd1e7084299187f70597a6bbfd8"}},{"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":"3dd08805ca9dc504feca942d6bc1d55fa51c451248ec52275060de61d7964a50"},"properties":{"commitSha":"2ff766e027f3997d049009d2d101de444f33cb17"}},{"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":"219030595f37d52d6cae5cb24782eb5602e66ad8f74022c61796be675d98a629"},"properties":{"commitSha":"70478525bd196b7cb30bd3669dfc51082adca6ee"}},{"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":"3041aeb465c8e19d58cbe2829151349895302dbbd1c002645450f9acee1f1dd7"},"properties":{"commitSha":"fd13eae36026b2b35c9becdbba2a46c4e2fa3c2e"}},{"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":"78a3b80c80795ce2ae6abdbb1d077127f943673c13ce4afa55271f792e3257ba"},"properties":{"commitSha":"ac78350137c816aab797a22c0bc10c19fbaf4314"}},{"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":"b1c0aef3c0a7b074a9347407e5bc2fa2a7c7debf0572a029cacc83dc67659331"},"properties":{"commitSha":"cb0f31c0bd768d0a6ce8a4a7d03b9079049070fd"}},{"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":"c7ca87babfdd14f643a37b2830b06b3601ad613e36857df0f965020aafd29de5"},"properties":{"commitSha":"0697cb1d632bd8618e365fb9dc6bdace46322182"}},{"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":"2f49370cfc6c40f7fd0bda055d9fb736ea2197b35e9ac0308db15fa060e3eb6c"},"properties":{"commitSha":"d3d2755ebcbe972df414f787e693b65b63b6cf70"}},{"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":"1c6ac75efaee447a9e74e22b4f6629aa119ec576c6da7eedd6ac584b70c8415d"},"properties":{"commitSha":"99149a9d68a13d193072274644f74de869d5ae20"}},{"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":"1e301dda5851a1531360886891e8a39528a78d2ca0779214e0e6ebde60ae6416"},"properties":{"commitSha":"1287953a371cf7aade12ed81874692808fe10b5d"}},{"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":"6b883faf5a2b427e30eec33a1c621f9366569646bb78ff26df903f1abb122ccc"},"properties":{"commitSha":"bac00332b0896cd0ab98ae9dc210c27325e8a91f"}},{"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":"f0d8da4ae2d15171136cb43c9bb04f2af13978ecae0dd94505b7cf2d24a0304d"},"properties":{"commitSha":"b669757da4e011ea2742ade2f4670a2a749e086c"}},{"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":"3f2d1cf9bc63000c09cc0fbdd4fdc614ea026665836a2006acf3756c1ccca859"},"properties":{"commitSha":"9ddf451a836b32fd9ac68fea3577b7be30df2745"}},{"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":"dd9bb053a413ba18421220b422b87a510bef8e16abc9ed9f6fc6c1439a6ff41b"},"properties":{"commitSha":"ed089a1eb24a2a53f271556af98e580ad226f3bf"}},{"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":"fa28b1579b9845cf92382e0536f4d180827c52475639c5f9492ad1bceb327750"},"properties":{"commitSha":"e8598a0f4a4957a6120851894cc14d60289a416b"}},{"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":"0ac292f707bd51675194ee77869be6181a1de6bddbdf01969d7bb4ea7c6fe501"},"properties":{"commitSha":"999ee4e6b82438996c30955cc47103bcfce4a35f"}},{"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":"d3aa107e4df24f12323d3695c6f47cad307249db8f0a9868aa4acb28c091a150"},"properties":{"commitSha":"591b413dc4eb3b8f6fa61c69798d169fdc7287a2"}},{"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":"e4600a091755ac1de755e580b4752a5e1a2b15b24802702758ee5b2dc36d836f"},"properties":{"commitSha":"185c6effa93fb47a528919967dd69bd3e642d333"}},{"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":"86dc13da45d52af251a35dd01c0ac1f468b5cb043da4d51543ba2da652b55532"},"properties":{"commitSha":"c199b8bde3e7db1f684c73f64bd8c05d05a0d3a7"}},{"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":"f4f151537f28865bfadfdf66c152a65b951fa84e8a1c0b2734eb894ef6ca0285"},"properties":{"commitSha":"d136d73cd72abb4921a19433ca746fe0383b3cd7"}},{"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":"9dcb3c552511a2a03ff87a1bebd9812d75e394d96404e230703a8b1e74c8bd44"},"properties":{"commitSha":"2688bae4b6f8384d288a3de395bd3e2d60c6bdf0"}},{"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":"99aaf5b7c669c85f76fefdd55c61f13beb9f9d5b0f065e8c3cbb6dbb380b59fa"},"properties":{"commitSha":"ffcc025a9ed8c9f54e7d7ce6cb09bf89bcdac273"}},{"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":"23f896a60e94dd3cd653170de76a140e2fcaab9f41c74ed889dea88c35671786"},"properties":{"commitSha":"80ceefef2ee8e2f3236c38b8f7fb639caa38a3d8"}},{"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":"d2a9216c1109dfcbdda2b0e6948f8cba0b7f8c28d24cffbcc3fdeacd13360d80"},"properties":{"commitSha":"e57ad65e9cad56891f7914e8b866d96e11e4c37e"}},{"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":"573beb9d38c89ea2eb016a7a8b991020e7a93884c76cd432873f25619f233f4c"},"properties":{"commitSha":"85d9e19be009dad39b014869c2feae081bff0c62"}},{"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":"14f6af8f4938c6695d7cb6b759872c58de225d088c3f523fc2f6473b5fbaad7e"},"properties":{"commitSha":"3d665a498b6902e70f653e3c4ec7bebf1e1cd580"}},{"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":"a7198466b468a2c662161f030e1469746f37ede8a8fbda85f7fb92984ced46e5"},"properties":{"commitSha":"5d1cb70c46c5059d6b97ff625e6eeaa8c9347800"}},{"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":"67c0bce415db3cd3c4bed053106076a5e0cf1725f98d8662db626976603dfac5"},"properties":{"commitSha":"bfdd1050bb21706fe694c480602bc9f1581e769c"}},{"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":"bf97c4eafef6df5e82440efcd70983de01fa1040b246ba5ec0b0abd4ecf40f8b"},"properties":{"commitSha":"8d22944a81e23e768ffe1c368e2b15b69241bf14"}},{"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":"1a59ba34aaadb0a22dc4aa19f8cdcbf7c770990de35a06574a615ab63e100478"},"properties":{"commitSha":"7287c0849e2a158879f900c7ae5133f21d609c81"}},{"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":"f3e82637419db0a955123e1da36b290b477ba3e738a7c5e44069debdebc81db9"},"properties":{"commitSha":"d8d292a3f341041c0167abc2b7483e9286986b9b"}},{"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":"d13c0aa367b89f7d32ee84270cdfeed93bcaeb611d126c47afd25053e93c7777"},"properties":{"commitSha":"37733d70071851a193dc8e99de9cd9e89ef55fac"}},{"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":"c17ff52ad1a31c45da2521c5453aef55929dad6732526d6c6b87d77ba4cb256f"},"properties":{"commitSha":"60cc1c55a93906e973c0def45698ce74a16285d0"}},{"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":"112ae678d207d5f8dd6d46d4d3084ed5dda525648a8092e0cd45a99dd1cda4f2"},"properties":{"commitSha":"f782da7acaa42671d084c8124ed561a44ac28c91"}},{"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":"cbf0c8b1bdb675605b07ec1d2dbcc601cf007195cf3d07aedeebe5ac609bfb13"},"properties":{"commitSha":"7085ca7fd4c2fd03ab24c5725520c77951193c8b"}},{"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":"0e3d28d8cdc1c53d85b7cf4684c67a292cbc51a023f902b92336810ed7af5572"},"properties":{"commitSha":"06001cc55ed81b934fb785def3593d581219f5f9"}},{"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":"9ea76c6f6909817becf9f49da968172bf96f1d6b674706414eac93fe7eeb54ab"},"properties":{"commitSha":"dac3e9921268f0d1463941984b6b4b1a6fed68dc"}},{"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":"7a2bfa4ba36080af8fd759ac09d0722cfec755c29fbd7052ae1a9119a991ef35"},"properties":{"commitSha":"448112d86e1316caaf90fd896b9388f34de511b5"}},{"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":"cc97b4c588b92169e831b9fb1220d4d81550339abc13f81101c345ec9ed19357"},"properties":{"commitSha":"20162999ab35e4f28c5a70b2de851fcfaed75175"}},{"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":"1c57fe397e144b3a4f60a05812c568ae3593e6adb437a5825bb86002ed1176dc"},"properties":{"commitSha":"f0e032fab2f5d77249e48963eb650d118eb03193"}},{"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":"a54f82d392ab16e8e8c407927bea191db205ba1e25fadcfc2d1c40a44a34d2c9"},"properties":{"commitSha":"af2cbc750af4812491e40b81d3a1385e13ed782a"}},{"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":"0849b8ca94046c9cf24b426f80652b93bafb3f8a9f5338856ff196d7d6580562"},"properties":{"commitSha":"03e50f4160c1a043dc1b146e64f97643226833a5"}},{"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":"df4b71cf2f42453159d50444ae80083e622a2b50b86b4d0d768c2e46fc3fb069"},"properties":{"commitSha":"868caf85ee93e3b592f5fa4ab88dd9a4a7f0418a"}},{"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":"871daacdcf5bae43a0ef7166f92949929a2fbd95b202e19145eb63dcecd60a89"},"properties":{"commitSha":"dc16cf3ec043612f3247bd3d826543e83c16a745"}},{"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":"e1b32fba1ef89cb17badb229a169391f7ccbccfb95f524547e744ee1760b84f4"},"properties":{"commitSha":"2a92b922e2f9a8eedeaf1afdbd0510d85cab59db"}},{"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":"88c079b29133cca4ac38a42846721fc2347c8dab31af0349bb16a2489f1f8702"},"properties":{"commitSha":"0bb8b4861db865657dfa2cc4f8f8d95f8c7c3cc5"}},{"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":"74bc87941b3e164c90282a7b74101321148e6f02c8f6d435228a12d5603def0b"},"properties":{"commitSha":"65bed5ea03648dc66b52a0c2d36def7dc0e99744"}},{"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":"7a7abd9dc861015aa8e644a4dc10b91cc9aa1cb2e9848cb71c09e402e2d1ad84"},"properties":{"commitSha":"6b594e1445e82a788e6cf1f22c077a80f048c05d"}},{"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":"6456f8c0a4ce55dedf32b35bf3fe79554b1a0c24cba99674157f272999a81888"},"properties":{"commitSha":"6742ba821ada01d3f869c82f9a882b1acd8d4a39"}},{"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":"abcc865cb10e55f035898318b7e2e7a8b5d1d78770ae60aeb3d60ee3f8627ad6"},"properties":{"commitSha":"748bf9044d2f6631af6a54bab3903e0f81bbb234"}},{"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":"29863e3b85dd01bda5a14fd17f3ced03295cbde1c6075b31b77e39b3c96250c5"},"properties":{"commitSha":"882b85c28eec08c488ec3afd3172342df8ba5fd8"}},{"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":"c4cbb19ac54e502740ba00964e722c3400c2a27b8a1da25b1477693a74c2b87e"},"properties":{"commitSha":"1c9746a6caf2166b367016e84f5de3546e040af9"}},{"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":"46f0090e9ac7103ae56b8bfa64ac685a711f265c1be9339af6f85a9ed749c2d0"},"properties":{"commitSha":"9a5f984710b2f5483cb736ec0860084032cb8bce"}},{"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":"26c8dd32aa3940aeb902c25e2dc46be688c50d8038932865c47c705bf766dd3b"},"properties":{"commitSha":"caf8cbff859f628842155f677cf9fb66da0ea949"}},{"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":"0a5752db0a7c633008c5a7ed47b9981c88b821035f1bceb467aa6ab0cc4f3cad"},"properties":{"commitSha":"0c641ae699a3c8080046cd431461f793c0602668"}},{"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":"f459913dac26b29cd4aa082569ad9b3dcb60b2d340196bb2ec4e9209162bb1ba"},"properties":{"commitSha":"adec48993b6d38bed265cada00fcaded1a9dc8ae"}},{"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":"294a5cd550109f9b13f5c3389850694b922644f89a001c28c6fd51d0d0ced8a8"},"properties":{"commitSha":"f139516e25ce3ac4be593f92252d2f2a3de6603c"}},{"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":"9fe9af8e4022dfbb1fcc8348e5e2a41d0eccf51dd896e263135710959a855ccb"},"properties":{"commitSha":"51345474ea2ca3f460eb53a84000d17dea43dd01"}},{"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":"b77b8d121d8a735d7972a9b267c4ad8c8cc8094a2bf86819bd6c1eb000d00f26"},"properties":{"commitSha":"812473b31aaea6c1409047d00a3076a846b54051"}},{"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":"4437af6a541c7c15d7c4855926ab9d9c9906642f9ea931fbc8c075f4b85aea5a"},"properties":{"commitSha":"7519e4b0271ad13d65918fead821fc6eb2dc26c8"}},{"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":"678dd6c3db60935673f2a9d3cd65376f38a6379db78a847d4bf105e471224039"},"properties":{"commitSha":"8b647d1dc9b0c0b14c0980de159342d2b0190d01"}},{"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":"d4cca76b9c560225cad98f09a3b0f422d43ea73b35bffaa0a15e2213f2759cc6"},"properties":{"commitSha":"de92ad61bfa764206faf6ffd904cea733d86bbca"}},{"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":"be8ee07623d2b1f93b59ac7c11ce20215430d06cf46aa3c111a233be374a510b"},"properties":{"commitSha":"37095c2bb6618ad856bc0de052d81fad5f420c2c"}},{"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":"b3c6d939db0f15f8e95be2c62b4cddd9b2d940f2232b7b502588a9e419724c28"},"properties":{"commitSha":"d25beb58f914d0341f91c8a1167820801c653dde"}},{"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":"d61a1f8046543fa9aad10a52aa44caad5ed389f94d15005de5a15fbf50df5091"},"properties":{"commitSha":"5e4ef8c4d64914b1455b589a9d789f40c4a59a03"}},{"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":"65c07dbc52858724f7df76e359688fc675aee856e2a3a68231b076032ccb6f59"},"properties":{"commitSha":"c2362b89a5cbc459589c619ddc3e8dd67e60fe1a"}},{"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":"24943eebeb8b5a2399941b63b6cf53bd56a2d77afd0cd2b7ce5dabf5ec22bedf"},"properties":{"commitSha":"7c151ad07c24036c77e37abba27d16838c0f9117"}},{"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":"59e2462a7571749110c802b3b3744c22d2cc8fbe4c50f34851e8a0fabd147627"},"properties":{"commitSha":"ede6b6dcdf3c8d1bbd88296404bb73d98c43c165"}},{"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":"572330096e7087cd763ef4da1573e4de7174a1c209b9e9c2af32b82e0e1da978"},"properties":{"commitSha":"2d61eb012136c6019c1bfb37825463fffda6b9f1"}},{"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":"f58eee12a6386b97d1473654ecf6588c2796b17c36e62e059153ad631039fddf"},"properties":{"commitSha":"4289b18cabe577bd79981a81876a86599b70bad3"}},{"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":"b435cc3aeac6f7a035ce50f100485160f7f23a2a43e387a996532b129411374c"},"properties":{"commitSha":"859512f95611115eb7fd030af459cab20922c4f7"}},{"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":"ffb6bf0cbee2fad344e5aeaf84778bfa1017423fabdee1f222c16853aacc791b"},"properties":{"commitSha":"e4400c35f50d266371f6af00100f3f5146651867"}},{"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":"b35f5204591155cc06f245df2fd8ee69035237631ea4e2f8ab626ce844f2e8c6"},"properties":{"commitSha":"b67e097c54c62eca70d9cab46de76a0103cd5b9d"}},{"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":"8cea9569aaaadc3b2eca459943b5daf6394546a93d7494d69e23b70fae95ee9e"},"properties":{"commitSha":"97c171a39bb263ecfe7f5f869c00792658e5dee9"}},{"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":"19b9cff6384fafd3036705a48ddfcecc2b063145168aaf7aa3a692ed1ff4796f"},"properties":{"commitSha":"c8cf4733e3d63e8d2f17d15ac463d3450835ea61"}},{"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":"b748871f620fcea27ec4e422ceda819e4d4d5db705f5839f941ad702c6fc446f"},"properties":{"commitSha":"2bd93255be74850da30be81f76c114bf15f5d381"}},{"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":"cbe1d7fc7c8da3efab94c501e3e1f74c6240660b69d9c89a45d9c8734756b641"},"properties":{"commitSha":"657596d2a1b3496dce8dcb50bc43a713bf64a954"}},{"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":"24e5ba0ead71142b583354c4dcb6ed3a43cc0bd84bc7b30eca7b365d9b154a71"},"properties":{"commitSha":"217e80f40243233121c4a6f969400dbd08bde3e5"}},{"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":"b84d7affacf63af3f44dcd82d95f402a476f1cbb6a5ee1867d796a4aa5332e1b"},"properties":{"commitSha":"a0787921dcd409715a94c484dd34f07c8c1ed928"}},{"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":"a44ac7bf1ff207ce864555f5b1ec3009fe70f760500f42881067bea9d7442677"},"properties":{"commitSha":"bdac1894bd665527188ac7bf888aee39132906ea"}},{"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":"d7ba666bf4c9ad747bdc7d1a7d50748f766246fd9afffc7c5406a9663ff04653"},"properties":{"commitSha":"350b07ecb08ebef5bafa2c39382da3c322d63b59"}},{"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":"bca65d5ca5b4e23b484659bc6bb8d11f58416eaf2e4c1313d5accf37bcee971b"},"properties":{"commitSha":"5adab50460ce0725e2641165b452aa118afa8d6d"}},{"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":"dde02329b33991f69ce6dc03ab93820f0e1dbf95d64a96e9f0eca7c2ed6bdab9"},"properties":{"commitSha":"f4627d9e7f9beacf62cb09dffddff4e5acfdc675"}},{"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":"b8a97b7254dd62c72ba9e3424a36fca0e742b61b5c5f8f0725dceb9c069767b6"},"properties":{"commitSha":"208a2029e48271009b53efccb6e8bd23881107d2"}},{"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":"5608bfa4f5e41b3fdf3cc0f37dfbc4ff2e458c788d330ef7527c5aaa23a6c840"},"properties":{"commitSha":"fc68151162706650e829e96de39fbf5a88a2b070"}},{"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":"2be290fff657668d217314a63dc031db4677f857453f5f67bcae37741236a5fe"},"properties":{"commitSha":"b44521ac6946fe7581c1b2406b78c2a274540145"}},{"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":"ac2eedae572ced7fc5a52b0d9092835ac0780463eb51ef2d71df5e5ee7812032"},"properties":{"commitSha":"581540fca04e2bbb79d87eb65f65952b2d7a6b37"}},{"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":"5902b88dec6c9bf132fe89f11c5592e9ff3e09e96bcd0c97c32810deaa0a8674"},"properties":{"commitSha":"a2ba7160a0dbd4c91dcc5891855a85f896b30fff"}},{"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":"c719d3cbe95ededc0ccff5c9660191d8afd0db443c0e17ae1e35113c694577af"},"properties":{"commitSha":"a2ba7160a0dbd4c91dcc5891855a85f896b30fff"}},{"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":"d3239e455a930cacb26115e1b68e9dfd85ac248370dabe1b599af1b9ed032c50"},"properties":{"commitSha":"ef48c66062e8c4d77f482adfd87c5689cf96523e"}},{"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":"9937ccd409c8eb1d41a8d8ded06c7fe9bc9a90aa6f0f529fd90a51c43ec3b14e"},"properties":{"commitSha":"5adab50460ce0725e2641165b452aa118afa8d6d"}},{"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":"304ecb253724f5ad9ba440d734a0b5197e9ab678e3ca985adb4cc40d489d7435"},"properties":{"commitSha":"9e4874d0fe00f2812832f5101b87e017c93cba75"}},{"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":"2078ce00ed2e874f239c56e03922d6aa4b1a9bd76a8b5c78078a28ef92711748"},"properties":{"commitSha":"c1fc4c061db280ef8f776e094815fce43b45bc87"}},{"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":"08df5be34eb15d7eac4f0534745ca4694432e94b4dea4e337564fa936b08d9c6"},"properties":{"commitSha":"35094c427bd1ebbf42710aff9da91c4e7decc6ea"}},{"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":"2715e17962cdbbe5fe776261944905dada03bde96fffdcc2c466802b284356a9"},"properties":{"commitSha":"50b3a724e5197b240efe9a9e96f4897d36557c5c"}},{"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":"25148583186a5d3e40e9d6906f0847626f71cfb31045bdf0d8b738c488594082"},"properties":{"commitSha":"b6f82bc95f5c95ef4bb0c33aa67b4d3b1393f881"}},{"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":"e0f5fe0d7bd582ee0d4b0ab6e89251630221b5a42b5c66cbd6af725ccde4cd2a"},"properties":{"commitSha":"9382eccf1a0e72edb73eba17a7162560f15d62e8"}},{"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":"50f5db66e47284913303006a1e93009c88cf1d05300380c20bc2b3161dda2699"},"properties":{"commitSha":"f4627d9e7f9beacf62cb09dffddff4e5acfdc675"}},{"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":"c3d76374c6f40e82114225a0f73f1ddc2ab3e4256e0c2f62a7e47685ef5023fd"},"properties":{"commitSha":"208a2029e48271009b53efccb6e8bd23881107d2"}},{"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":"4f49d580c04a941d7badfa764fd0755a732a002b11c06c39155a6ed2371f76de"},"properties":{"commitSha":"bdac1894bd665527188ac7bf888aee39132906ea"}},{"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":"43659e7427a250ca9bf0506ee81678063015f0afcc89ac44ae04fb85603a25db"},"properties":{"commitSha":"350b07ecb08ebef5bafa2c39382da3c322d63b59"}},{"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":"018d02e206276ef7fe32befc67fe1e3e7cc077c78f5b68b5522fe3bd3bc29def"},"properties":{"commitSha":"7bd1fc268b126638cde76bfb96e3465557d0d24f"}},{"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":"259a1691c71b8b309c83a08193f4673aa9af7527a5d0c089fa6804a97dbed175"},"properties":{"commitSha":"b8837785d476cb7fbacfc7b5695c0b715a5b4f4f"}},{"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":"4e0c3c9bb481c6f0f4c28729c98b70c72b014bbb35708d56d5af76879c10f161"},"properties":{"commitSha":"cbedb6c7d4a02d5fcada87e221e58ed9faba76cb"}},{"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":"67513cb7ff218b38fc1062ea509ff18eceb5e0dd7dc6bd3107f583f7aab321b6"},"properties":{"commitSha":"22ea6f050e48547ac14894e872ed6329a8f53418"}},{"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":"aed08a5b5662195540325fe3a6252353824ee9a3199eaa5b85cbaf8295fac6ac"},"properties":{"commitSha":"73f5f2d614e032539a56ff4eca9bb088bc5c71c5"}},{"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":"ed59d9adf64fcc0224b7d6e8c373effa8a41b6c6e565f3dad960d50b4c8ce065"},"properties":{"commitSha":"4b41e247ef7b2a5019c598ad2dc290303ad50141"}},{"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":"59e77be42e0905200867ccd898933ff86c8bf4cdbfa827626924dc02c86f6ee5"},"properties":{"commitSha":"687ab9560fc485ecdd78f213afb558d54b7ff295"}},{"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":"2b08b3573f8f71c52e0ebd079c3b586b726a997e13d501b8d334d702a49c00d9"},"properties":{"commitSha":"ab5a60689e1ceee501752c38968f23b90f625516"}},{"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":"1ebf06360fb94f66cf54818370d393056f1169d4d5df2f1e8d2c32f024a787e9"},"properties":{"commitSha":"afbcf4fe82e87ccdc72c4986eaa24228276cc9f6"}},{"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":"93b2613f367cc5390cf82a22895c4272a770bb0ef148fcdea1b34acad085febe"},"properties":{"commitSha":"b3f75927471b9101f3ad2874bc5d700d727bbc6c"}},{"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":"cae46231675386618dc2bf8c6129e3d12f896c7c4837f8ddd17e5df4931fc6b3"},"properties":{"commitSha":"cdb7be7e870838efa8557de1e7f060d41539b99f"}},{"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":"a02a673528541c410302ed4ff14b46786f9341fc738779ec95008b72b162ede3"},"properties":{"commitSha":"1069cb00e8b21e7032760e8fe44aed171a69d282"}},{"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":"9ce39fa244353fe525acf31f3c4e2902b24835d43f44365896c1f2bc7a8ff437"},"properties":{"commitSha":"4a8cfa2cfb3323bd005c9a395fe0ef6bb027fb36"}},{"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":"19d90999f9eec478414ab122ed36139aa6b5bb84a2f7ff0f7a55a0e32ee28dcc"},"properties":{"commitSha":"e9c9f1d5d1468be6707b03e0ed15a90dae362de8"}},{"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":"436e5f1ffe9cfa66c15cda39ec71c7aede995eb91f5ed5874e6f7ec5e2212f5b"},"properties":{"commitSha":"66d72b0e27c221e0a324aa246b31ca916b0f0afa"}},{"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":"fe40cd8482b9052dfc6dda8832ca19b91c6c10ff3c95d25a6b24bdccec02f288"},"properties":{"commitSha":"94df1385b7c9bb26bfd46d70d0dcd903dc25fc06"}},{"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":"29adb654106e9040660e28d58a6acadc22fdf0785fe794404d1f353a0ae1a279"},"properties":{"commitSha":"bc60cb74b7b3311e1e5519217ecad691ee602a27"}},{"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":"cafb22d1113bfaf158c1a0a4c4e268d043b047bc5c6c756d64fa1f8a819d6dca"},"properties":{"commitSha":"0a45bc9f5fca6a69311bdc431ce95aab3549960e"}},{"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":"381031cb0f526f6b1182c967b8510514f6328afc68e422e3df9c495d8c2e321c"},"properties":{"commitSha":"cf19f38748f85125cfed72e48811962dd1b57224"}},{"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":"575bb13920dc151575c9b2f0fc8093f2b05debbc7f83173c48f59331518d3c8d"},"properties":{"commitSha":"dfabecd1f80c0a7a921ca122011b870b45ed2b86"}},{"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":"7756b4df647fc8fc4622c8269d871943d9730708e489becd8dab6dae113da6e2"},"properties":{"commitSha":"0f22e619c3b34d9a204a3bc4fd148ae651ea8fc0"}},{"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":"d7fd08ca1c3cafdab75e5add8a771642491ef6fa0c135b14dd362d200e7b3ec0"},"properties":{"commitSha":"0cdc3459b2ad0c4dbb4ab3eb7f1be9fd67018d11"}},{"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":"778f23a9ab6909568a32528283f09f827dd2f25e3facc1593e721b86d03c982c"},"properties":{"commitSha":"159617e2dec43d2a450bfee0c8277df37313af59"}},{"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":"dbeb0942a5d302cd374feb05eacaa3ef2c4fe633d18055a357b4bc517c0dd151"},"properties":{"commitSha":"061b662c77f584a000d2afba5e9f424157566687"}},{"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":"0dfea174d29e7cc967394c9070e552307d1319e131eedcd99b3438098121390c"},"properties":{"commitSha":"0002785756988b3f2da6651ccb4525c442706e5c"}},{"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":"5989e1a7369ae80c9f374002a3ca2c74a4f6f4227dc05d24ce990d333ebc66bc"},"properties":{"commitSha":"598bda54cae2410992d55579a0651d74d5d1ceb6"}},{"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":"87cae9f312fdbf06285640c431aef6365e415a67d93d392f278cf54365f6802c"},"properties":{"commitSha":"d2d7ee10269030667ea37f6ba878889c6b66d147"}},{"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":"bc5311b37f2d09279f28c755db7af4058af228cab83576cae98c68840e5b8857"},"properties":{"commitSha":"012f97cd36ae44f9805db86ff5c44045dc3ebe71"}},{"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":"2239f8067da91ca8ee2fd0775a5489bf571bc03c59c2fc808e8a75f7358b4ace"},"properties":{"commitSha":"106da8eb2e3744b1cd426988b82fe4c40509b2ae"}},{"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":"0752e34d3bdf171f4e604d5627c90e063640c17213df989caba65ae93a127c49"},"properties":{"commitSha":"4628a31c24896abcb395cb09fa98ebc41f1d7276"}},{"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":"faf29025d239e335e63f46715a55367d50ebfb8e8607ef7e552013a83e8dfc62"},"properties":{"commitSha":"d98c2c5acd2f21068f476afb9e1b90f427144ac7"}},{"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":"70ba043f6d47a11dd44a751d6b378c1fd54addcccc8a95916cdc3faa99296459"},"properties":{"commitSha":"baaabaa49058067c855ad050be73a9cdfe9b6ac7"}},{"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":"afaa67eb945fa8c1a3e71956acb29261cae425e6cd1cb73348a2fdeeab76ed2d"},"properties":{"commitSha":"bc756785aac9b50028228a6390138c0636f84592"}},{"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":"1c4293e521b2f20956dde8e92489bf16f273be9c4c543dc7a5f9ce0421b3b58b"},"properties":{"commitSha":"ab35334e5df370f219b1edf1e179d8fc07f728ed"}},{"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":"4fa558de1025301cc1c1698e32f72319323f7229f02d467f68bec52c02249208"},"properties":{"commitSha":"e0fb7504de29839570737178e692bca61e56d7c5"}},{"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":"f30c71ace031c53e75776d24c57aaab0da959cef80cb0d540da28a6bdf94dce7"},"properties":{"commitSha":"0e08deb7f59bc63d790ed32b3cd273e0f2620d7a"}},{"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":"80c5410ef8e06672b6d3cd079576fc1a7096b9a0d524985d5e86b7ab9f1207e7"},"properties":{"commitSha":"b0abf896ad8d38f0ca0c5f91efa4073a6e283a76"}},{"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":"0591ee7235ce196aa145b101fbf454a47cc2c5bf3eb2c1ec57326a73420dfa63"},"properties":{"commitSha":"9053cb9a3d3222e933b66f7c0c25ff8d42182d81"}},{"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":"0ac920831330bf5e0e7a08fa2ef19ae40277902906348b90607f1eebef126b1c"},"properties":{"commitSha":"8b8c8647a085f9a89e04095119640ebbe84db032"}},{"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":"378b0168bbb97dc7720506a67b8526d594d0245b4aaa60756322593ff61897c9"},"properties":{"commitSha":"22ea6f050e48547ac14894e872ed6329a8f53418"}},{"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":"5f2a336d7a90222fd3cac190d991484b258514de215a3e4e7a305983d83a82ce"},"properties":{"commitSha":"355ab408cd7fc360506cebad2cceacb1137879b3"}},{"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":"2a29bc64b4dda837c9aca4070fb63b4ba0e748cd94a8db8336c421e6f0b314dd"},"properties":{"commitSha":"73f5f2d614e032539a56ff4eca9bb088bc5c71c5"}},{"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":"2b3ccc10e3a279b18aadc2ed9147c6f650e19cd3a77c1e024fb19c4dd6b9fa95"},"properties":{"commitSha":"4b41e247ef7b2a5019c598ad2dc290303ad50141"}},{"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":"b92cd006ad253be3a1de8346c347ac3fe3d078291d4ae8d379836fe22ab95e1f"},"properties":{"commitSha":"787a86a636e3c599744792c62bf169cb8783b1e3"}},{"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":"db963dc0601cb8e64328204ac02a44f5a4da584a23225fbef399df53c22091f5"},"properties":{"commitSha":"6f6c3476ae6e77edd27292910544b2ef6df43d39"}},{"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":"abac98fca7ba0008d993664fd865ec9115baef17bcea6f4c622a0698dad36110"},"properties":{"commitSha":"eb71297f11c2a63a194731c2b68bd53d5971802f"}},{"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":"b9e77bf6467d52aab65cd8bd50072f0ecbd0c0b0281f74115a87493c9661a2fc"},"properties":{"commitSha":"1330875b4ca526eda2e1d9e7ffb398a44774b33c"}},{"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":"b17a6a1d81bc15184239fd839d01f3aec05f5715c0c58c0ec9bacf3be71ec3c5"},"properties":{"commitSha":"4c39a465056280ea0dd3831e0cce39bac3adae85"}},{"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":"2a392a675392df77ef3fd4dc5944c2542c378c47f3a5dda2a5020f64cddbde61"},"properties":{"commitSha":"6f55de9babae9d49e4efdaf7eb997d80ead60496"}},{"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":"a37be55767149145eaf54b146d5b1af4e1c2c8a20815e1e8d7c9de0c21c36e07"},"properties":{"commitSha":"883c523edbc36a38664fc993bfbcfd87d7d74380"}},{"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":"5a837352971263d14bf193803a931a813e3b512b2b017da4766a0fbf1c82ab92"},"properties":{"commitSha":"a70219e53643bd16940f95336629f43076703532"}},{"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":"e7393f676e487debc4cbd2d19181badf21811e69412ec81fee2328a6e9649867"},"properties":{"commitSha":"2e58a9c5fc26d9e9dcfb10f0652dc22cd395efd4"}},{"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":"3a44e99a956a26c1cb792146d8fd2fc631ec695a83c9e19440d88e2c10727fa2"},"properties":{"commitSha":"613d2208021cffce5f4a7ab5afb74f1eae520f02"}},{"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":"f89a804e40108fc07b6b5934cd219b2cf911385576c158aa12ee6273ea1861e3"},"properties":{"commitSha":"b8837785d476cb7fbacfc7b5695c0b715a5b4f4f"}},{"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":"033051a695ef2c2ec2b3c73aefa2c330d36e85683620368acf307d1ced734b4e"},"properties":{"commitSha":"3c7fbee09669bef4ae62aa4405aa4e95daf82961"}},{"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":"83a8d4e0e9e13b31e3f160c88b551f1cfd00391e54a29f2790093a794c366312"},"properties":{"commitSha":"3c7fbee09669bef4ae62aa4405aa4e95daf82961"}},{"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":"211aea21fd527dbd2d9fe29f8235668de6cb5d4ef5f0ed8c721f6f882a74d8fa"},"properties":{"commitSha":"ab5a60689e1ceee501752c38968f23b90f625516"}},{"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":"f5957e02ad2c93e92efcf13e9789597276d3f973da3774730cf685fb22f2c5db"},"properties":{"commitSha":"afbcf4fe82e87ccdc72c4986eaa24228276cc9f6"}},{"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":"de63b3939c046cc64c0bd1da1cd546614fa9925f7b78440378eed8fd78c28256"},"properties":{"commitSha":"b3f75927471b9101f3ad2874bc5d700d727bbc6c"}},{"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":"d68056acb0bf9ccfb35d8b05a468b857f23e1ca5b843fe84bb8677918913fcf1"},"properties":{"commitSha":"cdb7be7e870838efa8557de1e7f060d41539b99f"}},{"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":"5ec986d52391eae5c1f11ecbe29dd88e48099bbd74e70d81a4f554b0e7f3dbb4"},"properties":{"commitSha":"1069cb00e8b21e7032760e8fe44aed171a69d282"}},{"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":"11617903f930e6208bd6f188765942613e7d604d80fb51c6874641311a33425d"},"properties":{"commitSha":"4a8cfa2cfb3323bd005c9a395fe0ef6bb027fb36"}},{"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":"80d3076cebce95b9340c99b599585b442364aa6b2fa23b81a3e5a5fc071b2584"},"properties":{"commitSha":"e9c9f1d5d1468be6707b03e0ed15a90dae362de8"}},{"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":"a362f7ebfe0b3c4c97a849029d2340f2a0a78825e098b92608a2d19404fdb4b5"},"properties":{"commitSha":"35efbcc8a291a08ba032564401c9b3e316640787"}},{"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":"4dbd7408cc9fbcc7e2fd0df3e2b7c80dddeabfb70f2c6babee588174b5aa0ece"},"properties":{"commitSha":"afbcf4fe82e87ccdc72c4986eaa24228276cc9f6"}},{"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":"096cb750837129cb615fe5602ea6d7ca305e8f48fada5fb0b7db48ea4c8c99d2"},"properties":{"commitSha":"b3f75927471b9101f3ad2874bc5d700d727bbc6c"}},{"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":"baa5c9ea633759e1ca2e27ad6dc1297cbd5977973039b7562bf83be867cf3f0b"},"properties":{"commitSha":"cdb7be7e870838efa8557de1e7f060d41539b99f"}},{"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":"49310b7e4a0fcbb6cdd1378a709de18f39a39bf8ca26f3d389b1fef7643b0fb3"},"properties":{"commitSha":"1069cb00e8b21e7032760e8fe44aed171a69d282"}},{"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":"9fff07a5a1a77a718edc212baf624e711c7e5a4c9193f6d077ba7162b5e8b3f3"},"properties":{"commitSha":"4a8cfa2cfb3323bd005c9a395fe0ef6bb027fb36"}},{"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":"8067fbc540375ddc7383a52032334d8d7e42473c06a3669daf369d6bf75f022e"},"properties":{"commitSha":"e9c9f1d5d1468be6707b03e0ed15a90dae362de8"}},{"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":"a2acf957670f0a6889aa6ca569a7fdfc6a531474c9c685e0bfe4a1a2c6135534"},"properties":{"commitSha":"35efbcc8a291a08ba032564401c9b3e316640787"}},{"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":"96a1f75de0389874c73a43c83ab9254f84316ea5d9279614d613fe82866da38c"},"properties":{"commitSha":"ab5a60689e1ceee501752c38968f23b90f625516"}},{"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":"16fa595b7ea08caba60c7667969440e6396020906da77906e84b194f4070215e"},"properties":{"commitSha":"afbcf4fe82e87ccdc72c4986eaa24228276cc9f6"}},{"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":"7936efb4a873b238a4ead1b2717b1dcde6b0a910c4118c3ce4b469a10f97fbb4"},"properties":{"commitSha":"b3f75927471b9101f3ad2874bc5d700d727bbc6c"}},{"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":"7f2bc3174b4762b01700897277c5bae541eaebe0edf4399b6caba7d7b5c7dd8a"},"properties":{"commitSha":"cdb7be7e870838efa8557de1e7f060d41539b99f"}},{"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":"75840527583d63ebaf548552ad1475becc30f3e2161579a354321abfea0013e1"},"properties":{"commitSha":"1069cb00e8b21e7032760e8fe44aed171a69d282"}},{"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":"dd6633f7b42aeee24de488be71ff8e5c5789a9cde399d22afdf8d6255d88c144"},"properties":{"commitSha":"4a8cfa2cfb3323bd005c9a395fe0ef6bb027fb36"}},{"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":"1cdb3642974ce19ce20f15be1a89c9c11823e6453e3879c42fbe94f6142783eb"},"properties":{"commitSha":"e9c9f1d5d1468be6707b03e0ed15a90dae362de8"}},{"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":"d41069f1afea75bfa2a24c1b34c1398ad6785d824dc937fbb3a642b54604b335"},"properties":{"commitSha":"35efbcc8a291a08ba032564401c9b3e316640787"}},{"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":"3626a725cfa60c07f5f4976e089f3b5a5c9eec178d19bf4333c45ae7b8c985c7"},"properties":{"commitSha":"ab5a60689e1ceee501752c38968f23b90f625516"}},{"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":"2636b60d93ac2a299632d3fdac2427fe21606d6a0a63f8b43840d975f2e8f2d5"},"properties":{"commitSha":"ab5a60689e1ceee501752c38968f23b90f625516"}},{"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":"1e34ebc0ea4e6fbcd26d98a1e3f7c58689d5971f49551c87f7e9739037734457"},"properties":{"commitSha":"afbcf4fe82e87ccdc72c4986eaa24228276cc9f6"}},{"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":"fcc6457b4653f9d010ee2ad704aa030fc66aa5f1ae7cd81e58e3b02b53a4efff"},"properties":{"commitSha":"b3f75927471b9101f3ad2874bc5d700d727bbc6c"}},{"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":"91b2591a0684be19ee69a497a1caaee15258e8adebc150848c3d5aa604fe7a0c"},"properties":{"commitSha":"cdb7be7e870838efa8557de1e7f060d41539b99f"}},{"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":"b407af34f64c36ef4d139ff985a60e9a5827eb106458510c78df408de4cce4f1"},"properties":{"commitSha":"1069cb00e8b21e7032760e8fe44aed171a69d282"}},{"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":"be8e8e7ca452ed3ecfb087222f2e310199685be3e3e1ddf2726bd62ac5b9c194"},"properties":{"commitSha":"4a8cfa2cfb3323bd005c9a395fe0ef6bb027fb36"}},{"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":"c89ed7d5ba0dd31ef5172f69a90a9c59858bba24cd02138abb660e1d5af4410a"},"properties":{"commitSha":"e9c9f1d5d1468be6707b03e0ed15a90dae362de8"}},{"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":"4df8c6f120dd1c73dcb36036390eb4a7e32c4e6a4c583d8b283c1a0ff70a8fc9"},"properties":{"commitSha":"695814a8397d5ae8dd9b8bb2f74cc78c71ef07fa"}},{"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":"181cf475ea84fc534ed9e8effa859c0903684ce0727420951771009b5b34cf73"},"properties":{"commitSha":"8a73405d6f63bd5ce038e28ff1f0cfa5871a3931"}},{"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":"8fd275f220d11e2486bbfb46a0bd822e88d5b12265fd3ea7bdbecea47a906135"},"properties":{"commitSha":"bf049df2693387d6a8acf02c8555e230de3a676d"}},{"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":"e2d98af0001fabcd7ccf4836396d18e782bf5f44dbe816eed76955585e4d2989"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"be7ccfe43720a56aff8a6fff7542e432ef67aa7a53baf821dbb6e12d178392be"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9678abc98fb1e5da63bf0d44f60dab409f1b4bec5c7761d127191278d5ec97d5"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"399fc470313c3327ff633f17ce5f2900b7f170974dd69686b22337acec49a270"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7785411b0d1bfab29ed4fdb2fd6b0da661d655e3b246ef2b073aed01badabbbd"},"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"}}]},{"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":"57e015dddb58d60f96eb1c2be93be7d89f633a9870b96815d95f74d7e44b7e55"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e951a748dcddae99a178cc73aabc0b67e85c1842f6cfb6f8bc27ece72dbafb51"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0d58a110cbeb6f3704b6ee804b6d10366c3e8c1f8d248ceeb2374594989b0801"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a9cacaa68a198edce8c4795bff26cd21cbc9e2fa0c9fa7fdb31d1656a51897a7"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"426d72fb62885e1122cafff58abca3b60cff78d3b87d58d0124ae2e6c2c0df96"},"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"}}]},{"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":"cf87ebd9cc1f1a0b748dd4e644b2d7594af84d47cb30e44ef9c599e13bf942bc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d64ee50104e283c57bcc8db78195f68cbdc7571d1434da0079d89a36af59906"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"27717f4f89c3ad236d9058cada32388010865e95027c8435ddb724c13ad8620a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"50b3618c1dcdc7e6c531fcc0e66092594c4a0c09c134f50102bd86d83a064b84"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ebd8a89c1b6a0711703ce9c51636ff2054864f6825c1135bf5ffc59eb6389e17"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3e6078ddfaafbb90d1bd08dbcc22204ac1b43b885d496af188e3c34ca1757e88"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"76c7007ea96a5f5c905b7c09998b432b051e14c950eb05baf747d382f1159ce9"},"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"}}]},{"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":"f71a41df05e4f5815e790c15239eec8b1afed812eead3df356b33884aceae6df"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fdab9dbb4279a291664e476bb2d560c358f2d2dfddab5dedfc4031ae921d427b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"37886af70a681281c92f4644a436fe692179bbc6c98719c4b3871661efba7996"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"59d4d4d3ac063900b26d4860eef7e70ac86db5e1a9718fbc67ea20b28ea6e6b6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c2429c086c038bdb5de5ab60c16de8027b7b62cf22eba95607d4848dd5569c43"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4d08ff34034dc081d7b260840e21ae7c30cae5791f3c18fb399625f7ca5778d9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b881dad45cb2c9216d479f5d5e514ab9d22812323a5f19958e5fa16bae85db3a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d997cbbcbd91f121febfbefe55ab5bd3ca9ef505eb9e2950cb29710d8e1c761a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b5b4f10937735e50da9694c3a71f99b685641b3ba9da7cca660540b68cd9a020"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d0f719a16209af0ac6121a087aa325f08de9831303d36c6d3c70767cde8f3b78"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0a0545a95558177d23b6b8fb643e7b466b69d64f3e68aecf5635dd153ac63ced"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"83a387e40c7d01bbd272f43849550c72ea00e5adbc264d24e7fa2b379e082f97"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b295e7197555f144e5875b279ddecea266c86d828edccee3ba1b664486b28431"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"efe01cf7bd98625c2e1834f89974f2a27f3c8209fce90457ccbec24ac289d2aa"},"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"}}]},{"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":"712f3a26d5f7f108a9c60afc2e8c400ede9d4720a78e34751e72bda63728b5a6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ce9e38a13a0e163af609905d908ef2652a66c4da7527deabdba5b6ce1abee4aa"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3610e22ff4c5359e143f0ebd953231ee4be1ceabc0353a35d8218c4fd254cf3d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9bfeffdb81df8b243b0a710e6dbcdde9828fb9855364cc914457b8b747fbf018"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8af93b54d7b6d09176d9c9016e65470b9e3497c2e30cd6af0b8b0a89230292a4"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"92a980c09f9376abd5cf729748543c0ee1d312190f125c79e00e78b595716810"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8f5862bf286afa4068956034357108d6f13211b6fcbe54c18f08f09632cd4fd6"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f21ab3c438c83f03015528f8545e128810cfafcf27ea3318a833a09b0103eea3"},"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"}}]},{"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":"18dfa246cb62a987fd215b201450ac18a9c7bdf51c9fe2e961b1b8abc589b86d"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c5246b46fd567e035f8e46c0d157b8398349477f41d7eed3b91a8792308912e7"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fa7212b3c693c62a088ee9597a54a1b1e2d90a695a8d6bc800253ba4027195a0"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9010c5a2bf975a044168944409094fa31b6d62ec97af6bdb96cc76d8053f3b6c"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2eeadd005d159d454bfb6f00081533177b6da1a9ae553c8373c4bbeab8baf680"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4708540acd906fb753d10bf1fa2461d4ee63bf6683670ee9c8383ff5a8c16d00"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"112604e76e99ae9e4282c79dd3c191063742a4a76fe28623a7c37ca4e7344713"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"284d68ea827ed8c734f16dfcf71652fee20cd96554cb48d33f519e09dcc3daf8"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","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":"83624e2a75b102d656da943ab10c203006d969612030d1669428c03d4067940e"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3da1ca9e7d354fe6bba2e8ce4d926250733cb3d61a1c186f2bad8a7efedcd7c"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b24f9cc7d93c0074b0aa004c765bfab7da284d9860391ab067aa6d8af37a6e1"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42f712cfefbf7e67e223c23ab2772ae092bc7be92cb9ce9e6c161cd5d8eaf15"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspectorViewModel.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbc0ce0f253e9028009ce2b865c5e8fabe07105f0d2cb95c2df4eddf5504dc86"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClassificationPrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b958c4d084fde3aa354eae3bed8ef525053d280997a2b73bb2cd60d57b46a4fb"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7776ad75112c736d8822b013367387f0577b182e8e390b9f016812a0fa7ba7"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e6af43da64a24323659fc38306db4e8999be08b7076666cd0e895d9cd335a6"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrientedBoundingBox.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"817e48da93b626d2a4091d8125a1107b640daab9f9ec81cca4e206e5e55fc53e"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/TimeIntervalCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"909c136d3ae3b0ff7f9277218dd94653f47a1f4acc7ced068d186d1f3d09e336"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Animation/Animation.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a94c68597a1389756fafe99d2af1eb32f9d4d62dbb905597af421a22643ca420"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointPrimitiveCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0e5f62bb489d13607548a2474cf4785596d8f6e886dab17849dd48e3dcb6d58"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileBatchTable.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2999463225fcdc975298d0f28c43989eaa3f6528b871e58a6fc7e2f7f98425cb"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/UrlTemplateImageryProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"73171369f4900b55ed6f445a1cf88ad73b4052da97e68b3916a9ea4f774466c7"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/SceneTransitioner.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fa1529e28419e71badb0f7fd713b45461b1c706d7c395f6301cd445a449eba"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CloudCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed55dee232da3f3442e9f09a546815edae4b6b0c6b43ff2b3cb7f937b470fae2"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"079aaefacf8381b32c6ed16a09519747bba530998168541862bce24abb9f0fb2"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GeoJsonDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b401d5640812a186479453fee479c693f2eff908deb1a35da13b553536cd545"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/GpxDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fbe21b017b14a13ad8deaa2afccbe305072e533eff783fb5537e919b4d48b61"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowVolumeAppearance.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb498be00811b4b7d7e03a3c754dbe58add88d55eaa90e2e0c983d4f371d7400"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/Timeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f319f416bd8c26e3cc029bd88817eaab3017f3cf62f713c56f90dc6f0dab7ef"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PolylineGeometryUpdater.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"543d6606f280c01abe42997af7fe6e0026ebed560d112534db1a3c2a5047f3f1"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/CesiumInspector/CesiumInspectorViewModel.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bfb1698a109b81842eeeba42bacf5799990991b1e289a2fb2fa3a5e880808dc"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Occluder.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dea77058646d7704c5dfef1dba6b8d9bb9477224b8c239b582cc53700e0c355a"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitivePipeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"de9c6146bb4743fdac63804e66100a9de86d34b542c32f40b8e03dcfc5a3a10c"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoxGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ec3c42456fa9c2a6204e0fea72de7a67bc83510bdd4b574adab1d26067cb8de"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonOutlineGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5285741cc5343e8fefd076977b6dce2bff88550a465713baeae012fc7a8869"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Simon1994PlanetaryPositions.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff408dac286b78bb689d81c6a146c0d13138b121088041264aba4eb1eae9699"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/PrimitiveOutlineGenerator.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c15a3ccb475ad14166223f7e3c572ad78a7db9e050eed7d399941ab7346a53f"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/EllipsoidGeometryUpdater.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb8cf8ecc71f77274cf7bec6afdb00f67cb11edbba204cc274e6c3d339c61bd2"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipsoidGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e8f89394d14dc97e3993e052aeadf72a6d69fe423fb71d3b0b2a7b9bb39a1af"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TileBoundingS2Cell.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9878ab8e0ee7ad4ada10a34514f6a29041eb284c04621c52cb3c2b641ac7a2a"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointPrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"405aa41af7ee330ba821ac526037429d2c8950ceb443d7d4d206e5a60145c0e9"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GoogleEarthEnterpriseMetadata.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c557b2c824254c8ef229604a99735cf918d7a71b1d0e4212f92562eca90ef537"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImplicitTileCoordinates.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee3398b893015d0c89cdf9448de690ec61f189df35d858856e326c4010a28e6"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/ModelAnimationCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0235e2e5a81b68d5fb2da24af7926305315cebc859763f808357b3211d4db5c"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BatchTable.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c364dc2f13c06a08616f2e633bdf93665185f134282750e8e2588620740d93a"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/HermiteSpline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcfe95a7963ab49b14d324bc0aaad5c9c6e9e6dbdacd30427037e705c12c3919"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/createElevationBandMaterial.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb662614b6f6a3f8ad5006d7cd85cab767e68a0c325ab168f2d212cb3725cb73"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/WallGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"32c97ff396ea803f3baedabb601d7181de1c8b89952c3d7261b940f6b72546a9"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"83b89974b9d6988c4c95abb39c01a06cf879366faf6cba01b5c7f556ba99f032"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/BillboardGraphics.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ee70058426db63acd721e06de2914769223fbfab7b9c6b3aff50ebbc4fffbd"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 319 smaller file(s) also have no living knowledge \u2014 folded into the freshness score and metrics rather than raised one row each \u2014 most significant first: packages/engine/Source/Renderer/ShaderProgram.js, packages/widgets/Source/Animation/AnimationViewModel.js, packages/core/Source/CorridorOutlineGeometry.js, packages/engine/Source/DataSources/CompositeEntityCollection.js, packages/engine/Source/Core/GoogleEarthEnterpriseTerrainProvider.js, packages/core/Source/CoplanarPolygonGeometry.js, packages/core/Source/PolylineGeometry.js, packages/engine/Source/DataSources/LabelGraphics.js (and 311 more) (360 orphaned of 990 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 990 of the 1616 production source files in this repository met that bar). Attach the read to the next change that touches one of them: have a second person review that change, and leave behind a short comment or test recording what the file is for, so the knowledge comes back at the cost of a change you were making anyway."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: Matrix2.js \u2194 Matrix3.js: \u0060packages/core/Source/Matrix2.js\u0060 and \u0060packages/core/Source/Matrix3.js\u0060 change together 93% of the time (14 of the 15 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 14 shared commits counted here, the most recent 3 are \u0060953c78e0\u0060 Promote some methods from ignore to internal, fill out docs (at that commit the files were still \u0060packages/engine/Source/Core/Matrix2.js\u0060 and \u0060packages/engine/Source/Core/Matrix3.js\u0060); \u006024c1cc4c\u0060 Avoid useless assignments part 1 (at that commit the files were still \u0060packages/engine/Source/Core/Matrix2.js\u0060 and \u0060packages/engine/Source/Core/Matrix3.js\u0060); \u0060dc7bf2d5\u0060 Types: createUniform.js and createUniformArray.js migration (at that commit the files were still \u0060packages/engine/Source/Core/Matrix2.js\u0060 and \u0060packages/engine/Source/Core/Matrix3.js\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix2.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b426f15e77f88003ea7533c8d015a0cfea5fbb77868e8aa091647b0270e3706a"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: ModelGraphics.js \u2194 ModelVisualizer.js: \u0060packages/engine/Source/DataSources/ModelGraphics.js\u0060 and \u0060packages/engine/Source/DataSources/ModelVisualizer.js\u0060 change together 83% of the time (10 of the 12 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 10 shared commits counted here, the most recent 3 are \u006074b40ed8\u0060 Moved entity environmentMapOptions to ModelGraphics and adjusted default; \u0060110e57f9\u0060 feat: moved environmentMapOptions to Entity; \u0060c4a89483\u0060 fix: fixes issue #12356 performance drop \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/ModelGraphics.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"099dbb05a9509a86b329789846810a63f0c950554139d652d421602a52fcff60"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: Matrix2.js \u2194 Matrix4.js: \u0060packages/core/Source/Matrix2.js\u0060 and \u0060packages/core/Source/Matrix4.js\u0060 change together 73% of the time (11 of the 15 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 11 shared commits counted here, the most recent 3 are \u0060953c78e0\u0060 Promote some methods from ignore to internal, fill out docs (at that commit the files were still \u0060packages/engine/Source/Core/Matrix2.js\u0060 and \u0060packages/engine/Source/Core/Matrix4.js\u0060); \u0060dc7bf2d5\u0060 Types: createUniform.js and createUniformArray.js migration (at that commit the files were still \u0060packages/engine/Source/Core/Matrix2.js\u0060 and \u0060packages/engine/Source/Core/Matrix4.js\u0060); \u006009a8ea0c\u0060 Types: Remove unused \u0027@memberof\u0027 tags on ES6 classes (at that commit the files were still \u0060packages/engine/Source/Core/Matrix2.js\u0060 and \u0060packages/engine/Source/Core/Matrix4.js\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix2.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7f986e04eb0feda93157b69b5975daf3edf3acb41f3887e6418918b28ca4d51"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: Cesium3DTilesTerrainGeometryProcessor.js \u2194 Cesium3DTilesTerrainProvider.js: \u0060packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js\u0060 and \u0060packages/engine/Source/Core/Cesium3DTilesTerrainProvider.js\u0060 change together 73% of the time (8 of the 11 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 8 shared commits counted here, the most recent 3 are \u0060d08ce7a5\u0060 Move constructors to tops of files; \u00602afb7b65\u0060 Clean up, clarify docs in Cesium3DTilesTerrain classes; \u0060a8532185\u0060 Remove calls to deprecated defaultValue \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"93dd9a916cc273b374ac6ddf4f8cca813ab481389f66948f2128b43bbd637cac"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: AutomaticUniforms.js \u2194 UniformState.js: \u0060packages/engine/Source/Renderer/AutomaticUniforms.js\u0060 and \u0060packages/engine/Source/Renderer/UniformState.js\u0060 change together 72% of the time (18 of the 25 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 18 shared commits counted here, the most recent 3 are \u006006f7c70a\u0060 Implements special high-precision model clipping shader; \u0060d3c6685a\u0060 docs; \u0060d80e32da\u0060 fix \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/AutomaticUniforms.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"96caec3852ef86827af3b1c40eeab08b73bdab909e31f5a2b12aa90481bf3d57"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: App.tsx \u2194 SettingsProvider.tsx: \u0060packages/sandcastle/src/App.tsx\u0060 and \u0060packages/sandcastle/src/SettingsProvider.tsx\u0060 change together 70% of the time (7 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u006035d591e6\u0060 decouple-1; \u00603d4146a2\u0060 autofix-init; \u0060f48c7a7b\u0060 autofix was too jarring. removed. \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c04a965ddf866196b6830ba970ea8a6b14731adb478533893f7c22b098dacfa"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: EdgeFramebuffer.js \u2194 Scene.js: \u0060packages/engine/Source/Scene/EdgeFramebuffer.js\u0060 and \u0060packages/engine/Source/Scene/Scene.js\u0060 change together 70% of the time (7 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u006059ed55ee\u0060 Edge Depth; \u0060cd5e791b\u0060 clear framebuffer solved; \u00607873a4f4\u0060 clear framebuffer temp save \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/EdgeFramebuffer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7941fdcf014f4351dc5e6dac8a5150594d645ef0273490f19e00052c7c17f8c1"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: VoxelBoxShape.js \u2194 VoxelCylinderShape.js: \u0060packages/engine/Source/Scene/VoxelBoxShape.js\u0060 and \u0060packages/engine/Source/Scene/VoxelCylinderShape.js\u0060 change together 70% of the time (16 of the 23 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 16 shared commits counted here, the most recent 3 are \u0060737a0c4e\u0060 Clean up voxel shape transforms; \u0060ff471a4e\u0060 PR feedback round 1; \u0060784405ff\u0060 Clarify shape-specific voxel uniforms \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelBoxShape.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"10604ec6255450a594255f4b33373b99493d52274dc493e05ff2c5793d9320f3"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: Bucket.tsx \u2194 bucket-client.ts: \u0060packages/sandcastle/src/Bucket.tsx\u0060 and \u0060packages/sandcastle/src/util/bucket-client.ts\u0060 change together 58% of the time (7 of the 12 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u00603d4146a2\u0060 autofix-init; \u00608390c545\u0060 remove debug logging (at that commit the file was still \u0060packages/sandcastle/templates/bucket-client.js\u0060); \u0060b3a2ba7b\u0060 remove todos, solidify bridge message structure (at that commit the file was still \u0060packages/sandcastle/templates/bucket-client.js\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Bucket.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b481ea7ba962b94959f2cb750af9dbe5f46c95290a72f69a3c84ae21cf54b0b"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: ClippingPolygonCollection.js \u2194 ModelClippingPolygonsPipelineStage.js: \u0060packages/engine/Source/Scene/ClippingPolygonCollection.js\u0060 and \u0060packages/engine/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js\u0060 change together 56% of the time (9 of the 16 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 9 shared commits counted here, the most recent 3 are \u0060620a0ec9\u0060 Adjust clip polygon region combining; \u0060dc84c675\u0060 Feedback from PR; \u0060e87589da\u0060 Fix jagged edges \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClippingPolygonCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7b59274c4630421de332b128350d44405305a3630d3e64fe82ea6dcf501043"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: PickFramebuffer.js \u2194 Scene.js: \u0060packages/engine/Source/Scene/PickFramebuffer.js\u0060 and \u0060packages/engine/Source/Scene/Scene.js\u0060 change together 55% of the time (12 of the 22 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 12 shared commits counted here, the most recent 3 are \u0060a0253e69\u0060 separate snap pass; \u00609299aa98\u0060 many fixes and cleanup; \u0060ae0fc98f\u0060 Snapping prototype \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PickFramebuffer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff84a10b8b010a175c3e4e2b94122d0a18f5371e48372973d4610652c3dd880"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: VectorProvider.js \u2194 ModelVectorLookupPipelineStage.js: \u0060packages/engine/Source/Core/VectorProvider.js\u0060 and \u0060packages/engine/Source/Scene/Model/ModelVectorLookupPipelineStage.js\u0060 change together 55% of the time (6 of the 11 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u0060ae5276d6\u0060 fix large screen space line width; \u0060dcf37469\u0060 fix; \u0060c8051a3d\u0060 fix \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/VectorProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e79dfc1af1c06edc786f378f4abd7d984f09b22c1882c7d92d5db413588dbfed"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: App.tsx \u2194 ChatMessage.tsx: \u0060packages/sandcastle/src/App.tsx\u0060 and \u0060packages/sandcastle/src/copilot/ChatMessage.tsx\u0060 change together 55% of the time (6 of the 11 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u006005bb5031\u0060 removed diffpreview (unused); \u00602841f1f1\u0060 autofix bf (at that commit the file was still \u0060packages/sandcastle/src/ChatMessage.tsx\u0060); \u00603d4146a2\u0060 autofix-init (at that commit the file was still \u0060packages/sandcastle/src/ChatMessage.tsx\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b316677d44ad65e3c15ed35d2113417bf0055a716a315c1124f4a44d2266a81"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: GltfVertexBufferLoader.js \u2194 ResourceCacheKey.js: \u0060packages/engine/Source/Scene/GltfVertexBufferLoader.js\u0060 and \u0060packages/engine/Source/Scene/ResourceCacheKey.js\u0060 change together 50% of the time (8 of the 16 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 8 shared commits counted here, the most recent 3 are \u006046c00650\u0060 Fix SPZ vertex buffer cache source selection; \u0060c024aed5\u0060 spz check; \u00608db037f8\u0060 Fix issue with loading non-spz glTFs \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfVertexBufferLoader.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a1728dcec6e309dbb866e35047ff7148135a2c93e347820b18d046b8871a4f9"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: SettingsProvider.tsx \u2194 ChatPanel.tsx: \u0060packages/sandcastle/src/SettingsProvider.tsx\u0060 and \u0060packages/sandcastle/src/copilot/ChatPanel.tsx\u0060 change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u006035d591e6\u0060 decouple-1; \u00603d4146a2\u0060 autofix-init (at that commit the file was still \u0060packages/sandcastle/src/ChatPanel.tsx\u0060); \u0060f48c7a7b\u0060 autofix was too jarring. removed. (at that commit the file was still \u0060packages/sandcastle/src/ChatPanel.tsx\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/SettingsProvider.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b89a371b8e65aa88bb9d8415af9c8609f1ac13c8f19aebb82c5390f60e5c9c7"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: PrimitiveLoadPlan.js \u2194 VertexAttributeSemantic.js: \u0060packages/engine/Source/Scene/PrimitiveLoadPlan.js\u0060 and \u0060packages/engine/Source/Scene/VertexAttributeSemantic.js\u0060 change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u00602448e21e\u0060 gltf spec updates; \u0060133b04b8\u0060 Updated the 3DGS code to support the latest spec and deprecated old spec; \u00601aff10a0\u0060 spz compression extension compatibility updates \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PrimitiveLoadPlan.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b48d8b3b77fd1db436b9bdfef421fef8e635cd8ce301e820b0450fb98a6df68e"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d068c977b62d9a977df1bb6f53e8b00b586c3abee955f91d715f92b8e019d624"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fe274ba5adebde25ca0b3db842e44cbb1aaeb7cfecfbb7215cd452596ba1f4c2"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d657599f6f99da1927d3377533dfc0888b34c4d84aa7d5579841fd72d0e39bce"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4f1e7684f8281bd255ddef97105c7055c2ebae06964c8745716b83e174debe83"}},{"ruleId":"D43","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":"ca77df8ac0ed56a2e42b0923be81cca477f3174e98a1dc599981adac6a376eef"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.html"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"3427752ceb6d883f605e0044f6a968643da2a7a28689a02caefcfdf8ac4dcebd"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.release.html"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9128c423184ae3f1b954017117da5752233867967a8e0cf891c9e124d4223a2"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/CreditDisplay.js"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac23a157b3f6c05f1b2aa983bc3e9adc2ac6705a47ceafb9039af42de9492ec"}},{"ruleId":"AC1","level":"warning","message":{"text":"\u003Ccanvas\u003E without a text alternative: A \u003Ccanvas\u003E with no aria-label/title and no inner fallback content can\u0027t be described by assistive tech. Add a name or fallback content."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/bathymetry/index.html"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5a8cdb49497d7b4e6f3165d2f28f33658f26cc37cf2ab06e2f5c2bcc023320"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/fog/main.js"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f83ceba5daea2ae2b76c052c7629cd2b20e492a6c18ec671823a89830eb2077"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/html-overlays/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eb36a95b13a9dbe480ad330fd19e110ffbde462865b1f84bd8bd99c969b9691"}},{"ruleId":"AC1","level":"warning","message":{"text":"\u003Cvideo\u003E without a captions track: Video with no captions \u003Ctrack\u003E offers no captions. Add a \u003Ctrack kind=\u0022captions\u0022\u003E pointing at a WebVTT file for this video (or confirm captions are provided another way)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/video/index.html"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"7634243da5cf79c4b42ffb255d472f02b74ac0cae25c0e051b138dfde010bd59"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/App.tsx"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6db1195f9ecc2f2a499fcb15b438a98047710006e796dc4601ad9d25d0641c"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/NavigationHelpButton/NavigationHelpButton.js"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c9ce6efe380ec4e67d79a6254e9fcbdcfb80da8b7fca7b41ba0299eb3668c90"}},{"ruleId":"AC1","level":"error","message":{"text":"\u003Cimg\u003E without a text alternative: An image with no alt (and no aria-label/aria-labelledby) is unreadable to assistive tech. Add alt \u2014 alt=\u0022\u0022 if it\u0027s purely decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/NavigationHelpButton/NavigationHelpButton.js"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb11517171132925ae7a37fb2a32e9f23ca77d1a41ea8df99f1bedbc777f4dd1"}},{"ruleId":"AC1","level":"warning","message":{"text":"\u003Ccanvas\u003E without a text alternative: A \u003Ccanvas\u003E with no aria-label/title and no inner fallback content can\u0027t be described by assistive tech. Add a name or fallback content."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/Timeline.js"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"e950159a7a960aad372868a7c5dfb80943f398333ec9656f466ead9920f08c39"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-articulations-dev/index.html"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a932b545b24266cd570ab05b022b8d3b5510b7de2089bd329d39ceb2855562"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-articulations-dev/index.html"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"aca09b8ec9f2db49c46cf302230ad311d2930ff6e22955c336938d429c491642"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-articulations-dev/index.html"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"c706f6adb4344e241990a3a6101ec0062d66be196a1a003592cb4df9e68d70c4"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"77011f1d32ee6762544e31d1ae3f124cda6b2f04d1dc1eeeffe2ff9971a032e9"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fe2c6d23ee1dd4f09a4bb37f590f92de304afc27354ca47d8176a55df413783"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a30f398227ff3df01fc80908aea468934cecc11e6c51c7d180dd059fd05d55b"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba15c9e583bf52b41984c8550d0a4b547bd7fb1988ba0b0574a40c8401d268f"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e071bbe92112fdaa90c711cd9074f0cd89514f2b9f8777e905bb38392d722e"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9e34e43651f901f3f61821dc555d19198d9164035868d723cc7014908b37329"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e773e2b5f31e8de57ffa3d3d3e9a5d88346219eb669c62ea2d8f8832039d9c2"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"591159ec1a1d6643fd21a308e91b23a9eca6213ceef3dc6539b92b2014dc0d0a"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"236ee91d89a079c0244be14727aa95a14152cb1b8ca11b371f4b5ac4702e644c"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba4ce54427eb0ad686738013048ba8e576dd58d81aca1f0a232369d07f3e7a0"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd6099d9036c4ca2e5579b17df56b1a64b49e6d7ee6e96934ff6fa0f9fb263fe"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-dev/index.html"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"212d8284f133d3f3e8f9fa7fe74d659edce092a2fbdca10f114920f5877be23f"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-dev/index.html"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a4f1d7a8f1bc88a4f4eb21a15a58c84b0addfefb666af1b3f86e13328500eff"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-dev/index.html"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd355bd06bb9aa8167e88c30c08ef2ed7fad608cf348bb7488090d9bf0a8c652"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-dev/index.html"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"00cfd51e4b38eaee011ec6bf19c68d1f9268d37d24882790d6ff96aa06dd3d2c"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-dev/index.html"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9eb8480e96a34faddfda558ff9028f73f63820e28bd99034a2876fc8bfa3280"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-dev/index.html"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"116a2c8e8c3681c297731e15183151ef6a9906ba242c3d19aa7302d10e4186e3"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f2eb66c4b745e59435b4e425a15092be3d1e5943d24755f76161d739155c9fe"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f48a1948cfbdf6044bae3d3a5ec54222a2e959014e0edd8ca74e141587074bf"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6ebbd00e6db0448df891482af1f0fc1cbfdb24873dcec35c2fe9ab84a6fc286"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"71003262d5966e2866b9f7bf363e820ab424f13c0e724ca844e798bf493b91b0"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bdea0bb6ebc24dd64ff56590908ccce4622b2e340eb4ff8c252e25ae23c675d"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"642afe909895da08813602121a6fc8e606b6b4d36ea3a03a43602af8b3a2dc07"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"626c3c085d4137446e994b7b0544bad5ac7c2c1655bef32f4a78f19f6191caff"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8fd88e75a875ef143d904ec4d8a6eb886c30eefeed74b6d2dcf828e5967a70"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78fcb7d64e15f68daa38ef349e00d01a3ee12dff57b0c34830859b09804b934"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"914d33786ac2a408a04d46fd1ec419acd9dfe8d1eb978ec0bf2116890e1b601a"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f73973d4eff9247bafb8964caeb9190048a1d2ac4914ab557589e66d8632214"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"750a3d1dcdb5cba0b7cfa43d0af0f1b5c7110ea11e690b442112892a813e560e"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d00d85b02b1eaa1c2188ab0d2b05b5b881f74b215a4de5454c65458286a47a"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"3154edb2616cc7669bde462c648a22e8d85d03f9315e74caf6b2ebd6bd635a72"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd6f20bb0ad930a62e7cbe001f061b8d6fd54b3e6026de232c5da71b0a589b86"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"efeb3123019f96f12bb7d7719b78baa98102d4b24770bd41113476b859a19156"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"38f0614d096bde890900b76e5500ea09036f4ff1de759a7e5da126c4d96065ed"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6928dd52651278bd66a7b49f08ebd225c5aa0ee94bf5b28ca8ed8f00ecb5187"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-1.1-photogrammetry/index.html"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"397b4bc9b197f7e6863f409c55184c4a4241870e9458d391ef0219dea8aaf45e"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-1.1-photogrammetry/index.html"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dea005d44725b04b850bbd877a89da7a43b8c2e45ef948c07a4b6683ff0116f"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. This document\u0027s body is only the mount point \u003Cdiv id=\u0022cesiumContainer\u0022\u003E, so there is no content here to wrap \u2014 render the \u003Cmain\u003E from the component mounted into it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Apps/CesiumViewer/index.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"b55ff5e2ef5ddfd88ef5035ec4799fc2ba4e773b9027a6256e932fa253d1e8ab"}},{"ruleId":"AC3","level":"error","message":{"text":"Viewport restricts zoom: user-scalable=no/0 or a maximum-scale below 2 stops low-vision users zooming to 200%. Remove the zoom restriction from the viewport meta."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Apps/CesiumViewer/index.html"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c494dc524cc1634ca6a9aa94764b312e07ed89a65da1f462d4e077391c84d4"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. This document\u0027s body is only the mount point \u003Cdiv id=\u0022cesiumContainer\u0022\u003E, so there is no content here to wrap \u2014 render the \u003Cmain\u003E from the component mounted into it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Apps/HelloWorld.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d2ec3bf5369841c3b90cf46190cc38f740eb495557d24c301661590d64e47bb"}},{"ruleId":"AC3","level":"error","message":{"text":"Viewport restricts zoom: user-scalable=no/0 or a maximum-scale below 2 stops low-vision users zooming to 200%. Remove the zoom restriction from the viewport meta."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Apps/HelloWorld.html"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c9caa0ec84045e364a4b953acebeb7015055d86394d4ae77317ad1f29b71e97"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c03112092084821eb10323780c41f92cd64c7f4713debc46d9031ab90eaa76"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"732c4587b5831e9d9da4b05f6bb12d9a8a817ddcc0ff07809f91bca0b3a52697"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.release.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"22ec5b6de593cd1b73fb4f76fe3ac45ab80f780ea3fdb016dc5fce60d66d70c6"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.release.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb3791a372985ffd7df16673f565e615c412053cfdf4d8367d4093527bede52"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.release.html"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"c279a815ef55e24f0c1d3dce9ce2dea97cee8a06912c2a4a833633b5749a157c"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"index.release.html"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"b97581ec4f02585dc6ca451ebab7b58d71e4e8150f0bdeed4dd2cb67ebe7a038"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-articulations-dev/index.html"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"13dd832cbfcfde3b36016ac60f8eed58ee12869f4d30811989f83aafc19556b2"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-coloring/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"328c28ba233033d0520106e37062f61c449f13d325612a56eb1146ad3327fdf3"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-dev/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed88278321e43f765be0c16c0b591f4a0883f3ed689544a5699be8067d568ada"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-models-node-explorer-dev/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e799207c8edea663c742ef648086cf597d6569e1df8f25cd8a7b816ed61663ac"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-feature-styling/index.html"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"9109bca2819a3717a05f23056bba295a97ca5206674bbcabf140799edc7874e1"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-nga-gpm-visualization/index.html"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ea73ecf51a74ef333c4ba8eee3a3e6c1f96bf2082e8e946e6719d85a8bf69a"}},{"ruleId":"AC3","level":"warning","message":{"text":"Heading level jumps from h1 to h4: Skipping heading levels breaks the document outline assistive tech relies on. Don\u0027t jump levels \u2014 increase by at most one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-nga-gpm-visualization/index.html"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bbfbd49653656e8fbfefe595bb7a7e31e6055d2302c801fd3b77c4b1bea42e1"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-point-cloud-shading/index.html"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"5133b4588ff4361296e5e5483567e3288aa08ff30900b3d96b866158ad6dd592"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/3d-tiles-vertical-exaggeration/index.html"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1dd87bf5e906dc120ee56809c68836fa1065803b82e33d034de77db8ceabaa"}},{"ruleId":"AC3","level":"warning","message":{"text":"Empty \u003Ch4\u003E heading: An empty heading appears in the document outline announced with no text. Give the heading text, or remove it if it\u0027s decorative."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/aec-elements-api-query/index.html"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"046fa98c0e981f0d8c610fcbcdce7269e558bcfe520626b61ef3d49533866eba"}},{"ruleId":"AC3","level":"error","message":{"text":"Viewport restricts zoom: user-scalable=no/0 or a maximum-scale below 2 stops low-vision users zooming to 200%. Remove the zoom restriction from the viewport meta."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/ambient-occlusion/index.html"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"e88513ae43a7bef266e0de9af9f3166649370b8e25bdb628c49d59936625d599"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/ambient-occlusion/index.html"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c3a5d2f1d9b1b235b0c44ad71e027caee4deef8efcaf3fc578ed8fa86df70ee"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/bathymetry/index.html"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"9857ba23a4dc7dc38a60c3d48e623eb275eff5e37299762a4c7434cdfa34a478"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/bloom/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a36a84b691625842acf44d709a855c3056ba001c96d879d4ce17228987edf14"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/classification/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af2473e2afd42bd451068ae6e4e957dbcaca8f238ad72653ee3f4cd6cc8a9f7"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/clipping-performance-dev/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ec3ffda4e62e7c99bc322c45c89d5a1b7d23f943d3ea61744ca39407e79bd2"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/cloud-parameters/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ab6c7aa866dbfb6d146ddcf6be570df8a2563133adabcbb8a2f5d4644eb9a8"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/clustering/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d90ed7f83689f4b62b5aca07553727ae4cf9072ecdee3c7e7568a38e193b31"}},{"ruleId":"AC3","level":"error","message":{"text":"Viewport restricts zoom: user-scalable=no/0 or a maximum-scale below 2 stops low-vision users zooming to 200%. Remove the zoom restriction from the viewport meta."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/depth-of-field/index.html"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"207a2b204f008c4bc52d9b44f8e9948c3b8cfe4b9e51e37c050397fd8d3e6709"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/depth-of-field/index.html"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7b7adde813af4c2aeea8b4ea2805f7916ff4e7663fbed5af8b7ea3c98d7f8c"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/elevation-band-material/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"072b6cf27087175834f1e9e34e806582d06c0df1d05527e7daa39987d34682fa"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/fog/index.html"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e17f37d245fe0e000e0767f273c475503773bdab7c8b7152facccaec1619086f"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/globe-translucency/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32785d7ac1c7087f1343371ffcc289f6b30ed2eb0a201028da3f60cf6911ae9"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/gltf-planar-fill-dev/main.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e6d2973640fd04c84bddd53755599ec1be367cb49dfc644d6530a4bb10ba054"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/imagery-adjustment/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e962b8a678e76e5f5662f17d1a78a11236562ae84339cb489a60c584c87256c"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/imagery-color-to-alpha/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"16685ca93666a1c5ad8c563f4a72d1a7fe552d0d292f8546276d4069b366dbad"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/imagery-layers-manipulation/index.html"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"62479111e8a237ff6f2b597f0279ac1a5808e44fd2454af3f765b7a7e42d505a"}},{"ruleId":"AC3","level":"error","message":{"text":"Viewport restricts zoom: user-scalable=no/0 or a maximum-scale below 2 stops low-vision users zooming to 200%. Remove the zoom restriction from the viewport meta."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/lensflare/index.html"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f897793e131191d470415ced46ffed2121cf8b75880b0d94e5ac15842cd7303"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/lensflare/index.html"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"27fad17a6a9369ce45d708ff137062b4210aa278c49b102c43c8a752327a5fa5"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/many-clipping-planes-dev/index.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"2425fd0f394280f01ba2325932c204d33b2de7680707a238abcbb4e6cb92abe5"}},{"ruleId":"AC4","level":"error","message":{"text":"Click handler on a non-interactive \u003Cdiv\u003E: A click handler on a plain element isn\u0027t keyboard-operable. Use a \u003Cbutton\u003E, or add role \u002B tabIndex={0} \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/ConsoleMirror.tsx"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5d41beb1d72fe77e943f420cf372e34f5cd95ee1c36669744b24723df1db892"}},{"ruleId":"AC4","level":"error","message":{"text":"Click handler on a non-interactive \u003Cspan\u003E: A click handler on a plain element isn\u0027t keyboard-operable. Use a \u003Cbutton\u003E, or add role \u002B tabIndex={0} \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/ConsoleMirror.tsx"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55d22994c988d3d89b2c697f9b07f7608dc22bb6f9b5d67698d8d8644a8f4ba"}},{"ruleId":"AC4","level":"error","message":{"text":"Hover-only interaction on \u003Cdiv\u003E: This \u003Cdiv\u003E binds mouse-enter and mouse-leave and nothing else \u2014 no click, no key handler, no focus handler, and no tabIndex={0}, so it cannot even take focus. A keyboard user cannot hover, so whatever the pair reveals or highlights is reachable with a mouse only. Bind the same state to focus/blur as well, and add tabIndex={0}=\u00220\u0022 so the element can receive that focus."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/integrations/ConsoleChatAction.tsx"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"e870ec3fe4acbe62d4927fec9d3ad3c37a72b522334a9fa874dfb77b74df20eb"}},{"ruleId":"AC4","level":"error","message":{"text":"Clickable element isn\u0027t keyboard-operable: The repo\u0027s own CSS styles .expandItem with \u0060cursor: pointer\u0060, so this \u003Cspan\u003E is a control \u2014 but it has no role, no tabindex=\u00220\u0022 and no key handler, so it can only be reached with a mouse. Use a \u003Cbutton\u003E, or add role \u002B tabindex=\u00220\u0022 \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.js"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3412f7159693c0d02a393c06835dd36fcea0ec6727222707f3bf0754e47c34b"}},{"ruleId":"AC4","level":"error","message":{"text":"Clickable element isn\u0027t keyboard-operable: The repo\u0027s own CSS styles .cesium-timeline-bar with \u0060cursor: pointer\u0060, so this \u003Cdiv\u003E is a control \u2014 but it has no role, no tabindex=\u00220\u0022 and no key handler, so it can only be reached with a mouse. Use a \u003Cbutton\u003E, or add role \u002B tabindex=\u00220\u0022 \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Timeline/Timeline.js"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1868b83bdefbd8c8beced70ccc9f03299dabab8d2b07534e5f32cfc5466a7f8"}},{"ruleId":"AC6","level":"warning","message":{"text":"Focus outline removed in CSS without a :focus replacement: outline:none/0 with no :focus rule in the same stylesheet removes the focus ring. Provide a visible :focus / :focus-visible style."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/atmosphere/index.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"415504351d9918c12248122d4fb9d5893cce11be1706d8b083ab85eec50d412b"}},{"ruleId":"AC6","level":"warning","message":{"text":"Low contrast colour pair in CSS (4.0:1): \u0060#viewChanged, #cameraChanged\u0060 sets color: white on background-color: red \u2014 4.0:1, below the 4.5:1 WCAG AA minimum for normal text. Darken or lighten one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/camera/index.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde6032c7a84a6b2cb62e58b602c04638df6be98468d316ba23e1dd9abbb1647"}},{"ruleId":"AC6","level":"warning","message":{"text":"Animation without a prefers-reduced-motion guard: This stylesheet animates but never checks prefers-reduced-motion, so motion-sensitive users can\u0027t opt out. Wrap motion in @media (prefers-reduced-motion: no-preference)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/mars/index.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a15bff6d2ea5ef8dace2a64c9f74b78779f4fa3653b1deb56c65c4d9fb4de2"}},{"ruleId":"AC6","level":"warning","message":{"text":"Low contrast colour pair in CSS (1.0:1): \u0060div.hr\u0060 sets color: #dadada on background-color: #dadada \u2014 1.0:1, below the 4.5:1 WCAG AA minimum for normal text. Darken or lighten one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tools/jsdoc/cesium_template/static/styles/jsdoc-default.css"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d46d66a89cf37ee5e3d1adc42d9a5be6d0c8bec1b4c7b996414f1d3143b1f453"}},{"ruleId":"AC7","level":"warning","message":{"text":"Accessibility enforcement below the top rung: No accessibility enforcement found \u2014 no a11y linter (eslint-plugin-jsx-a11y) and no axe/pa11y/Lighthouse in tests or CI. Start with the linter to catch issues at author time. What was searched, so you can tell an absence from a miss: the 377 markup file(s) this pass actually assessed, the linter configuration checked in beside them, and this repository\u0027s test and CI files \u2014 matched by name against the accessibility checkers this dimension carries. An audit run outside the repository, a hosted scanner, or a check whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d46019b86eff5ddad9db289e6802ac158899e980df54c34f67722442787ead62"}},{"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: README advertises Docker containerisation, but no Dockerfile/compose file exists \u2014 searched for: \u0060dockerfile\u0060, \u0060docker-compose\u0060, \u0060compose.yaml\u0060, \u0060compose.yml\u0060. Each was matched case- and separator-insensitively against file and directory NAMES anywhere in the tree, and against the CONTENTS of manifest files (package.json, *.csproj, *.props, *.slnx, *.yml, Dockerfile); the README\u0027s own prose never counts, so a claim is never refuted by merely being made. Nothing outside that search was read \u2014 a footprint living only in a submodule, in a file type not listed here, or under a name none of those terms matches is not seen, and this row is then wrong."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"343bbbd51ceb8de7a9ff88d79f7c797abf9b5921f8727b67b4d0f4f8a22c5e49"}},{"ruleId":"P2","level":"warning","message":{"text":"No structured logging: No logging call was found in the 1619 JavaScript/TypeScript production file(s) this check read across 5 module(s). Each was searched for its ecosystem\u0027s logging libraries (JavaScript/TypeScript: pino, winston, bunyan, log4js, loglevel, consola, the NestJS Logger) and for a call on a receiver named \u0060log\u0060/\u0060logger\u0060 (or ending in \u0060Logger\u0060/\u0060_logger\u0060) with a level verb. It cannot see logging through a repo-local wrapper named otherwise, or in source it did not read \u2014 this is \u0027no logging found by this walk\u0027, not a verdict that nothing here logs. If it is right, production issues will be hard to diagnose."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9f10d71351c6778ebe84e761f82a90d4f9ed6c64f5e01975ede8fda7e4e2ebc5"}},{"ruleId":"P3","level":"note","message":{"text":"No SAST: No static application security testing detected. For this repository\u0027s stack, add CodeQL\u0027s javascript-typescript pack, \u0060semgrep --config=p/typescript\u0060, or eslint-plugin-security as a CI step. What was searched, so you can tell an absence from a miss: the 18517 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":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060fetch(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout. 2 of the 2 files that make outbound calls are unbounded; the first 2 are listed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"c400a80587c3351cad1d299b3abc3cd9c8cfe2253a6788c1233dba29752b89ed"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060fetch(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/updateIonToken.js"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"da1a6b92bc3a20c043f65c19baad551c91dd67371887852076c4838e52afef64"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060glslToJavaScript\u0060 is async and calls existsSync, statSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build-utilities.js"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"74861853389db97947a4ac9775e6694b6ac7000442a14f5273a094ff1ad84bd5"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060tsc\u0060 is async and calls execSync, existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7fd3bd7f79d85c4a7f32c93e91058d39b4aa55bebe2c1468f33a5c70c59ac42"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060prepare\u0060 is async and calls copyFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c2ca0a3097bdbc281739b74495295b115eb55f65cd3fc5299d130f572451d3e"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060buildDocs\u0060 is async and calls execSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0f68c7b056cd05306ff0dd9410d98ebcaf7a327c3c32cc97a70f100d012a9e1"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060postversion\u0060 is async and calls readFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"134ab35a57708c043dd882f1c4d3edf3aa83a9094fd103e1f0099a0c5b89ce99"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060runCoverage\u0060 is async and calls writeFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"883c0fb4314046ecfa0a24e3b28fe2887b227ebc3391cac6acbd3dba831905c1"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060getLicenseDataFromThirdPartyExtra\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2f44904fab2db265b9365c06d12beb72ea3074fd728c12c7609ae41b508758"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060getLicenseDataFromPackage\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":1337}}}],"partialFingerprints":{"codehealthFindingId/v1":"6537bf8aad176c8191ae50b81c111915fc8361e9697c50a1df50700bce94b712"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060checkFile\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/moveCoreFiles.js"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2263f6752192c21a9e6540f296ab9df352b86646da8f59894f5c4a15453187"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplication concentrated across 227 sibling directories (230 clone groups): 230 duplicated blocks under packages/sandcastle/gallery/ have copies in at least two of the sibling directories 3d-models, 3d-models-articulations-dev, 3d-models-coloring, 3d-models-dev, 3d-models-node-explorer-dev, 3d-tiles-1.1-cdb-yemen (\u002B221 more sibling(s) not listed) \u2014 174 of them are reported below, and 56 are counted here but not reported individually: those copies match on shape but no longer clear R10\u0027s bar for an individually reported row \u2014 either they kept neither their own names nor their values, or what was copied is too small to stand on its own (it reports near-exact duplication only, and only of substantial extent). What this row states is the concentration, which the detector measured over all 230 and which does not depend on how exactly each block\u0027s copies still match. That concentration is one structural fact, not 230 local ones: the siblings replicate behaviour none of them owns, which is the shape of a missing shared module \u2014 a common library every sibling imports \u2014 rather than 230 separate extractions. Check first whether the siblings are deliberately standalone deliverables (scaffold templates, demo apps that must stay copy-pasteable); where they are, the duplication is the design and the per-block rows are the ones to act on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/aec-snapping/main.js"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"6414c89d0e342c315137442b5e02cdd87450e26f9451ef71cb5c473ca417dc90"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplication concentrated across 6 sibling directories (139 clone groups): 139 duplicated blocks under packages/engine/Source/ have copies in at least two of the sibling directories Core, DataSources, Renderer, Scene, Widget, Workers \u2014 48 of them are reported below, and 91 are counted here but not reported individually: those copies match on shape but no longer clear R10\u0027s bar for an individually reported row \u2014 either they kept neither their own names nor their values, or what was copied is too small to stand on its own (it reports near-exact duplication only, and only of substantial extent). What this row states is the concentration, which the detector measured over all 139 and which does not depend on how exactly each block\u0027s copies still match. That concentration is one structural fact, not 139 local ones: the siblings replicate behaviour none of them owns, which is the shape of a missing shared module \u2014 a common library every sibling imports \u2014 rather than 139 separate extractions. Check first whether the siblings are deliberately standalone deliverables (scaffold templates, demo apps that must stay copy-pasteable); where they are, the duplication is the design and the per-block rows are the ones to act on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/DataSourceCollection.js"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d4fd840743319054cac72fbe97939c61b20dc84570822853c1da645141fc76"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplication concentrated across 4 sibling directories (132 clone groups): 132 duplicated blocks under packages/ have copies in at least two of the sibling directories core, engine, sandcastle, widgets \u2014 47 of them are reported below, and 85 are counted here but not reported individually: those copies match on shape but no longer clear R10\u0027s bar for an individually reported row \u2014 either they kept neither their own names nor their values, or what was copied is too small to stand on its own (it reports near-exact duplication only, and only of substantial extent). What this row states is the concentration, which the detector measured over all 132 and which does not depend on how exactly each block\u0027s copies still match. That concentration is one structural fact, not 132 local ones: the siblings replicate behaviour none of them owns, which is the shape of a missing shared module \u2014 a common library every sibling imports \u2014 rather than 132 separate extractions. Check first whether the siblings are deliberately standalone deliverables (scaffold templates, demo apps that must stay copy-pasteable); where they are, the duplication is the design and the per-block rows are the ones to act on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolylineGeometry.js"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"88618a84540f3fe5c309662f185e2813c92debb5a3d68e5461b19bab63cb9b54"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplication concentrated across 15 sibling directories (23 clone groups): 23 duplicated blocks under packages/widgets/Source/ have copies in at least two of the sibling directories Animation, BaseLayerPicker, Cesium3DTilesInspector, CesiumInspector, FullscreenButton, Geocoder (\u002B9 more sibling(s) not listed) \u2014 14 of them are reported below, and 9 are counted here but not reported individually: those copies match on shape but no longer clear R10\u0027s bar for an individually reported row \u2014 either they kept neither their own names nor their values, or what was copied is too small to stand on its own (it reports near-exact duplication only, and only of substantial extent). What this row states is the concentration, which the detector measured over all 23 and which does not depend on how exactly each block\u0027s copies still match. That concentration is one structural fact, not 23 local ones: the siblings replicate behaviour none of them owns, which is the shape of a missing shared module \u2014 a common library every sibling imports \u2014 rather than 23 separate extractions. Check first whether the siblings are deliberately standalone deliverables (scaffold templates, demo apps that must stay copy-pasteable); where they are, the duplication is the design and the per-block rows are the ones to act on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspector.js"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e04e82c17b1e8e2f0b471818b0079b6deed2f1bf691515ffec8b48b39b5ad5f1"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (421 matched lines \u00D7 2 locations): packages/engine/Source/Scene/BillboardCollection.js:191 \u00B7 packages/engine/Source/Scene/PointPrimitiveCollection.js:125 \u2014 the two spans are one implementation copied and then locally edited \u2014 1999 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa19e35edf369399789d0ca4ea24c256e6742a1b7933d06adcddda4d6ba340ce"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (337 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/StaticGeometryColorBatch.js:19 \u00B7 packages/engine/Source/DataSources/StaticGeometryPerMaterialBatch.js:18 \u2014 the two spans are one implementation copied and then locally edited \u2014 1831 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryColorBatch.js"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8faac3c902c03d4c3aec1c8b020303e794238dfbfa1017801d01777414cc3c87"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (335 matched lines \u00D7 2 locations): packages/engine/Source/Scene/Vector3DTileClampedPolylines.js:177 \u00B7 packages/engine/Source/Scene/Vector3DTilePolylines.js:139 \u2014 the two spans are one implementation copied and then locally edited \u2014 1843 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileClampedPolylines.js"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54989aae450d0f6cc6b93e0730a557b3240cde1006b6e6854a5e313031cc380"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (269 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js:28 \u00B7 packages/engine/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js:37 \u2014 the two spans are one implementation copied and then locally edited \u2014 1651 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c31fb5bdf4b7fb69ab2890fa85f5f7f32ff784a81b47db6c6e05f8cd641f1a2a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (257 matched lines \u00D7 2 locations): packages/engine/Source/Scene/VoxelBoxShape.js:75 \u00B7 packages/engine/Source/Scene/VoxelCylinderShape.js:53 \u2014 the two spans are one implementation copied and then locally edited \u2014 1366 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelBoxShape.js"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc193f52ad1c0ec29d1d169d180ee4ca87885e93b67bee6f39dfd152127b4fe"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (251 matched lines \u00D7 2 locations): packages/core/Source/OrthographicOffCenterFrustum.js:39 \u00B7 packages/core/Source/PerspectiveOffCenterFrustum.js:47 \u2014 the two spans are one implementation copied and then locally edited \u2014 1424 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrthographicOffCenterFrustum.js"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aeee62fa6970b9170fa167a638a53dba6be702639ba2a9c08592058279514bc"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (248 matched lines \u00D7 2 locations): packages/core/Source/Cartesian3.js:110 \u00B7 packages/core/Source/Cartesian4.js:117 \u2014 the two spans are one implementation copied and then locally edited \u2014 1961 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Cartesian3.js"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"12af57b71327effc4dba978c26d5ed9add4e6011fa1248dd1c1c753724541129"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (240 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/StaticGeometryColorBatch.js:81 \u00B7 packages/engine/Source/DataSources/StaticOutlineGeometryBatch.js:40 \u2014 the two spans are one implementation copied and then locally edited \u2014 1428 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryColorBatch.js"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d099c5af7362ba5e997f1112ca55c3e4502191ea3227dd23ce29f125a28e487"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (229 matched lines \u00D7 2 locations): packages/engine/Source/Scene/WebMapServiceImageryProvider.js:114 \u00B7 packages/engine/Source/Scene/WebMapTileServiceImageryProvider.js:191 \u2014 the two spans are one implementation copied and then locally edited \u2014 1133 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/WebMapServiceImageryProvider.js"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a2c1d89efafa33501902829e9412449501669a9a8ede659a09cf7d774aa4b63"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (226 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/StaticGroundGeometryColorBatch.js:16 \u00B7 packages/engine/Source/DataSources/StaticOutlineGeometryBatch.js:20 \u2014 the two spans are one implementation copied and then locally edited \u2014 1388 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGroundGeometryColorBatch.js"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2bd51182a7b69834b01ef49491ae9123bcf859159381fac26e757d98281989"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (224 matched lines \u00D7 2 locations): packages/engine/Source/Renderer/Texture.js:74 \u00B7 packages/engine/Source/Renderer/Texture3D.js:91 \u2014 the two spans are one implementation copied and then locally edited \u2014 1065 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e5e86ae8a809039304b734c41e226434ffd4d99e9abb712501e37aa5b9f9d68"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (209 matched lines \u00D7 2 locations): packages/engine/Source/Scene/Vector3DTileGeometry.js:75 \u00B7 packages/engine/Source/Scene/Vector3DTilePolygons.js:77 \u2014 the two spans are one implementation copied and then locally edited \u2014 1288 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Vector3DTileGeometry.js"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e62bbc4843f55bee5ac335f35de711bcf27fc99e85b1bddecfbfc14f436bd9"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (205 matched lines \u00D7 2 locations): packages/engine/Source/Scene/BillboardCollection.js:1729 \u00B7 packages/engine/Source/Scene/PointPrimitiveCollection.js:902 \u2014 the two spans are one implementation copied and then locally edited \u2014 1118 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":1729}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9e98e1149077471ceb1daa0f9d652841e552dbac35c6314e2b0c6c14ff62160"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (191 matched lines \u00D7 2 locations): packages/engine/Source/Scene/BingMapsImageryProvider.js:134 \u00B7 packages/engine/Source/Scene/GoogleEarthEnterpriseMapsProvider.js:123 \u2014 the two spans are one implementation copied and then locally edited \u2014 776 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BingMapsImageryProvider.js"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdec41886e53f1adbbd58e39fb43dccca139f0cb6f91ed168bf7dd41224cea92"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (191 matched lines \u00D7 2 locations): packages/engine/Source/Scene/renderBufferPointCollection.js:62 \u00B7 packages/engine/Source/Scene/renderBufferPolygonCollection.js:61 \u2014 the two spans are one implementation copied and then locally edited \u2014 1058 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/renderBufferPointCollection.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"600da52be113d3b0636dca420cf3fcc7af3aee56a53a54cd2840ffbf4281192c"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (182 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/BillboardVisualizer.js:30 \u00B7 packages/engine/Source/DataSources/LabelVisualizer.js:31 \u2014 the two spans are one implementation copied and then locally edited \u2014 877 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/BillboardVisualizer.js"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0996a69271150fb58491e647ab722fc31c149eccc16bfe3d77516160242f941"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (181 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/BoxGeometryUpdater.js:54 \u00B7 packages/engine/Source/DataSources/CylinderGeometryUpdater.js:63 \u2014 the two spans are one implementation copied and then locally edited \u2014 899 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/BoxGeometryUpdater.js"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a00f3b9a9f923c324fe72e35e45552bcfe3e936d4ef27600c066ed31bdcf57d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (176 matched lines \u00D7 2 locations): packages/engine/Source/Scene/ClippingPlaneCollection.js:142 \u00B7 packages/engine/Source/Scene/VoxelBoundsCollection.js:79 \u2014 the two spans are one implementation copied and then locally edited \u2014 949 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ClippingPlaneCollection.js"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"737ac27cfa2f25fa681aa0f63949cc11a4ef61581e2705d0c2309d06b177df20"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (174 matched lines \u00D7 2 locations): packages/sandcastle/gallery/aec-snapping/main.js:12 \u00B7 packages/sandcastle/gallery/hybrid-snapping-dev/main.js:45 \u2014 the two spans are one implementation copied and then locally edited \u2014 1096 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/aec-snapping/main.js"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d7159f0dc409093518ea0b02aba4291c167c9c27982dfc2dfe385c69616091"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (165 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/StaticGeometryPerMaterialBatch.js:310 \u00B7 packages/engine/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js:252 \u2014 the two spans are one implementation copied and then locally edited \u2014 1013 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryPerMaterialBatch.js"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8db097e37dfa33b2788363eb49d04c0cddf509e8fa1085f2470ec306a1dae7e"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (164 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/PolylineVolumeGeometryUpdater.js:76 \u00B7 packages/engine/Source/DataSources/WallGeometryUpdater.js:66 \u2014 the two spans are one implementation copied and then locally edited \u2014 805 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PolylineVolumeGeometryUpdater.js"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"d81b25c77d42cb9723f8d583746b2f915f4ca603dd790dd88126ce48abc409b6"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (162 matched lines \u00D7 2 locations): packages/engine/Source/Scene/Model/B3dmLoader.js:67 \u00B7 packages/engine/Source/Scene/Model/I3dmLoader.js:79 \u2014 the two spans are one implementation copied and then locally edited \u2014 839 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/B3dmLoader.js"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"56abc9f23cee9b8a7cd6fe12f459acbd148b2a5b67bd0b685bae1f883b36f0b4"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (151 matched lines \u00D7 2 locations): packages/engine/Source/Scene/GroundPolylinePrimitive.js:574 \u00B7 packages/engine/Source/Scene/GroundPrimitive.js:533 \u2014 the two spans are one implementation copied and then locally edited \u2014 682 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GroundPolylinePrimitive.js"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f6b599af6c07b2830925f62aa749eebc843691309b45983b7bb930ab9b9ff03"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (142 matched lines \u00D7 2 locations): packages/core/Source/OrthographicFrustum.js:65 \u00B7 packages/core/Source/PerspectiveFrustum.js:91 \u2014 the two spans are one implementation copied and then locally edited \u2014 738 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/OrthographicFrustum.js"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"68ccee00832a824a459d20da113c3ef463b9a71d415a642dcfc81f0303989a40"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (141 matched lines \u00D7 2 locations): packages/sandcastle/src/copilot/ai/clients/GeminiClient.ts:54 \u00B7 packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts:278 \u2014 the two spans are one implementation copied and then locally edited \u2014 735 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/GeminiClient.ts"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8a46b255facb41ab68468e1b318be51a0691dfbc35c7b5b3a82ffcac80522b"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (139 matched lines \u00D7 2 locations): packages/engine/Source/Scene/Composite3DTileContent.js:34 \u00B7 packages/engine/Source/Scene/Multiple3DTileContent.js:81 \u2014 the two spans are one implementation copied and then locally edited \u2014 679 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Composite3DTileContent.js"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1604b76c06eda7eb5fb590f0105d075e71966fa784d34927e0d65dd82638562"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (138 matched lines \u00D7 2 locations): packages/core/Source/EllipseGeometry.js:1030 \u00B7 packages/core/Source/RectangleGeometry.js:1112 \u2014 the two spans are one implementation copied and then locally edited \u2014 757 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipseGeometry.js"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f1333b3ff1782c90ba79303256429e3cdfcb84391aa5486d36441bd799d5cef"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (135 matched lines \u00D7 2 locations): packages/engine/Source/DataSources/StaticGeometryPerMaterialBatch.js:37 \u00B7 packages/engine/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js:37 \u2014 the two spans are one implementation copied and then locally edited \u2014 832 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/StaticGeometryPerMaterialBatch.js"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ad1b6122c4c259498f99fba12190fe2e6285a9c4d2564614e3930a41849fca"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (131 lines \u00D7 2 locations): packages/engine/Source/DataSources/CorridorGeometryUpdater.js:27 \u00B7 packages/engine/Source/DataSources/EllipseGeometryUpdater.js:27 \u2014 the 2 copies sit in sibling files in one directory, so check first whether one of them (or an existing module there) already owns this behaviour and the others should call it; otherwise extract it into one module in that directory and have each site call it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CorridorGeometryUpdater.js"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"be41b66b520039725a450ae287bb8f4cf167ce472377d826b85f572576831d1f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (130 matched lines \u00D7 2 locations): packages/engine/Source/Core/GoogleEarthEnterpriseTerrainData.js:306 \u00B7 packages/engine/Source/Core/QuantizedMeshTerrainData.js:435 \u2014 the two spans are one implementation copied and then locally edited \u2014 730 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GoogleEarthEnterpriseTerrainData.js"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bcbee9308f59a0b993731345f29eac339fda5fe7dc0a89cdb79645eda185434"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (125 matched lines \u00D7 2 locations): packages/engine/Source/Scene/GltfIndexBufferLoader.js:24 \u00B7 packages/engine/Source/Scene/GltfVertexBufferLoader.js:24 \u2014 the two spans are one implementation copied and then locally edited \u2014 714 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfIndexBufferLoader.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f5bcc2a65182a925eb06a8ed8d6e3844adb85d31883d765ede767207bd054c"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (123 matched lines \u00D7 2 locations): packages/engine/Source/Scene/Model/Model.js:844 \u00B7 packages/engine/Source/Scene/Model/Model.js:1423 \u2014 the two spans are one implementation copied and then locally edited \u2014 500 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b388922280d7b66aeae6350c9391ab8b4488ab6bb22829e3d3b2d36746180a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (118 matched lines \u00D7 2 locations): packages/engine/Source/Scene/Geometry3DTileContent.js:23 \u00B7 packages/engine/Source/Scene/Vector3DTileContent.js:37 \u2014 the two spans are one implementation copied and then locally edited \u2014 604 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Geometry3DTileContent.js"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e735072f10a7fcc3ffa9a02ac7432c76f19ad51fe837dafb214130265f88b00"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (114 matched lines \u00D7 2 locations): packages/engine/Source/Scene/GltfDracoLoader.js:15 \u00B7 packages/engine/Source/Scene/GltfSpzLoader.js:91 \u2014 the two spans are one implementation copied and then locally edited \u2014 658 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfDracoLoader.js"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"6092fd38f5535edbc712cf71190e5df1cc876402d8328ad5a068cec7202c6d3c"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (112 matched lines \u00D7 2 locations): packages/core/Source/WallGeometry.js:253 \u00B7 packages/core/Source/WallOutlineGeometry.js:230 \u2014 the two spans are one implementation copied and then locally edited \u2014 629 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/WallGeometry.js"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc427968e091fbbd851ae1dc716ee80a139932bad4cf3e8d88b61258d073761b"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (111 matched lines \u00D7 2 locations): packages/sandcastle/gallery/geometry-offset-attribute-box-cylinder-ellipsoid-dev/main.js:6 \u00B7 packages/sandcastle/gallery/geometry-offset-attribute-dev/main.js:6 \u2014 the two spans are one implementation copied and then locally edited \u2014 659 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/gallery/geometry-offset-attribute-box-cylinder-ellipsoid-dev/main.js"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"9736e4c0a6d67b7b200aed2ddf35b242ab2749cfc2e3997a0f1fdcde5fe5bef4"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: gulpfile.js:24 reaches into another package with a relative path (./packages/core/scripts/build.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"22159047909e9a8df76ab78c9115ecdc50dcf6b6a27b3c3f18973e0ac6a49da1"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: gulpfile.js:25 reaches into another package with a relative path (./packages/engine/scripts/build.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"be237833019ceb3d15a64dfc83578d140d2b5bf398d69a28c8c0939abfc24c5f"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: gulpfile.js:26 reaches into another package with a relative path (./packages/widgets/scripts/build.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gulpfile.js"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"82ad00f95c7cb15b160dcafb54498e5833589877ab6999033f4978b621b0f4a1"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/core/scripts/build.js:8 reaches into another package with a relative path (../../../scripts/build-utilities.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/scripts/build.js"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"552954e905668fac16d6d949635bf4371c4cd1b1395f02ad6c7a5e4b47486e69"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:third-party-deep-import]: packages/engine/Source/Core/GoogleEarthEnterpriseMetadata.js:2 imports protobufjs/dist/minimal/protobuf.js, reaching past a declared dependency\u0027s public entry into its build output \u2014 that path is the package\u0027s toolchain layout, not its API, and a minor version bump can relocate it with no semver signal. Import from the package\u0027s documented entry point instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GoogleEarthEnterpriseMetadata.js"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"02ec15867b4b37005c27fad7892cf1a3546e68824aeb44986bddc60b87223e58"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:third-party-deep-import]: packages/engine/Source/DataSources/KmlDataSource.js:47 imports @zip.js/zip.js/lib/zip-core.js, reaching past a declared dependency\u0027s public entry into its build output \u2014 that path is the package\u0027s toolchain layout, not its API, and a minor version bump can relocate it with no semver signal. Import from the package\u0027s documented entry point instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8266677b77dddaff4797f8d04cc08f7dadd00d7d997eb83ddcfc5ba20bd39a7"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:third-party-deep-import]: packages/engine/Source/DataSources/exportKml.js:25 imports @zip.js/zip.js/lib/zip-core.js, reaching past a declared dependency\u0027s public entry into its build output \u2014 that path is the package\u0027s toolchain layout, not its API, and a minor version bump can relocate it with no semver signal. Import from the package\u0027s documented entry point instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"20f4d203333f0b5e17def8b5f1f9723df1162d0d6c6819e4349460f59b9fa071"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:third-party-deep-import]: packages/engine/Source/Scene/GoogleEarthEnterpriseImageryProvider.js:16 imports protobufjs/dist/minimal/protobuf.js, reaching past a declared dependency\u0027s public entry into its build output \u2014 that path is the package\u0027s toolchain layout, not its API, and a minor version bump can relocate it with no semver signal. Import from the package\u0027s documented entry point instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GoogleEarthEnterpriseImageryProvider.js"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"9110ac7d3af6d7d7e876e96e1b90fb4d92b2a7f75cbc53032b63d65f39e35df6"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/engine/scripts/build.js:8 reaches into another package with a relative path (../../../scripts/build-utilities.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/scripts/build.js"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f7f9e64a856d02fba394c86180d5e99c5bdc9d17c7a8d330addce12ed239a7"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/widgets/scripts/build.js:8 reaches into another package with a relative path (../../../scripts/build-utilities.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/scripts/build.js"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c69d82f1bd57d95d9e8a11741242d4004cf3e4600ef202a4c0575de362bce5"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/widgets/scripts/build.js:19 reaches into another package with a relative path (../../engine/scripts/build.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/scripts/build.js"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca5241a6e94c1a93d77c8497e87fd0e74e7a7443311b99292145010a6d86c3f3"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/build.js:24 reaches into another package with a relative path (../packages/engine/scripts/build.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.js"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"183ea6f973dd84bab67fe8635470bb8ee2829b5e116bd2b5cbb9b5f8dfe43c4c"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/build.js:25 reaches into another package with a relative path (../packages/widgets/scripts/build.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.js"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2c623b55e8816af5be7939131032e1fa07e62767cd8869b2b0e17f28711a66"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/buildSandcastle.js:6 reaches into another package with a relative path (../packages/sandcastle/scripts/buildStatic.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/buildSandcastle.js"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb6e5dc6f9d34b6a4198f022a91ef3a6d7ff17f47251fbd07245730db80fb11"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/buildSandcastle.js:10 reaches into another package with a relative path (../packages/sandcastle/scripts/buildGallery.js) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/buildSandcastle.js"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f08fe70ba547b4236c6011ba343e62fb2d646e16cf312fdeb70afba6acb48af"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function update (cyclomatic 108, cognitive 184): update has cyclomatic complexity 108 and cognitive complexity 184; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":1569}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d922064cca370f3fa0db6258830a884cc43f3751acf6e1b1ba09f3c5e8b64b1"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function addDrawCommandsForTile (cyclomatic 107, cognitive 147): addDrawCommandsForTile has cyclomatic complexity 107 and cognitive complexity 147; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":2510}}}],"partialFingerprints":{"codehealthFindingId/v1":"ace1336801e7ad24e0522c12459c6f9a513fce5da8d11e882e87a499b9820af0"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function intersectPlaneTestCornersEdgesFaces (cyclomatic 105, cognitive 104): intersectPlaneTestCornersEdgesFaces has cyclomatic complexity 105 and cognitive complexity 104; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Specs/OrientedBoundingBoxSpec.js"},"region":{"startLine":960}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c333e726c98456ee1f7c9d12b3ca31eaabc26bdad5aefb7b0d969f6517feab5"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function RenderState (cyclomatic 96, cognitive 99): RenderState has cyclomatic complexity 96 and cognitive complexity 99; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/RenderState.js"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c359cede5d8495a85e7bfb97d2d8fc75a8ddbffe5e32312271f4aa56ac313d"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function getShaderExpression (cyclomatic 90, cognitive 98): getShaderExpression has cyclomatic complexity 90 and cognitive complexity 98; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1906}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e803ebbba5fd83eb3113adfd0bee2e92c26cb152904e9c234e837064b498884"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function getShaderProgram (cyclomatic 84, cognitive 154): getShaderProgram has cyclomatic complexity 84 and cognitive complexity 154; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceShaderSet.js"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b20b5d1f8d58bee3a54254644050b750f9f54ab7339f3767418ccf2381c8500"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function computeAttributes (cyclomatic 73, cognitive 209): computeAttributes has cyclomatic complexity 73 and cognitive complexity 209; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34b63e618071aa987a0f4ce75e011a6c3e23a1fcaf5cd669f22d84069284f58"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function createGeometry (cyclomatic 69, cognitive 112): createGeometry has cyclomatic complexity 69 and cognitive complexity 112; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/EllipsoidGeometry.js"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdfaa9ac97885190d39aa16fdb18a6bc5a2363fd6be7bfd564a4b1d3ba2af299"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function fromIso8601 (cyclomatic 69, cognitive 103): fromIso8601 has cyclomatic complexity 69 and cognitive complexity 103; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/JulianDate.js"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"c673fa2ffe52babe727ea726e5a1f085fe5860ceffc78eb84d1cb9d10f1161d8"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function Cesium3DTileset (cyclomatic 68, cognitive 68): Cesium3DTileset has cyclomatic complexity 68 and cognitive complexity 68; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dbc4bea079019d1d7a379d414e2d8abae438a30c8ac92ea19486a945bd3c06a"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function Viewer (cyclomatic 66, cognitive 77): Viewer has cyclomatic complexity 66 and cognitive complexity 77; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"32f2aaefcd9cfcfd23f21b0a097765b7cae2644416247d1f077a326c18fc7904"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function update (cyclomatic 64, cognitive 106): update has cyclomatic complexity 64 and cognitive complexity 106; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointPrimitiveCollection.js"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"e46f5a09f598f477f95c9a9cc98eb5df0928a2f6714b7bcf4be582ac139d17cc"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function createShaders (cyclomatic 64, cognitive 78): createShaders has cyclomatic complexity 64 and cognitive complexity 78; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"cebb69dd67ec12c30edbe36aa8fb3e0bce7814abf0f67abcf751c9dbc102d1f8"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function computeVertices (cyclomatic 62, cognitive 106): computeVertices has cyclomatic complexity 62 and cognitive complexity 106; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/HeightmapTessellator.js"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f507df9b4721cb0af51cddd2fe48c996f1c69d07b5138651f7c734411cdd72f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function constructExtrudedRectangle (cyclomatic 60, cognitive 106): constructExtrudedRectangle has cyclomatic complexity 60 and cognitive complexity 106; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da33b045a36e8ce267f2a2637eaeb7bf3c2d25aae7d934a6378f3d823215d14"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function update (cyclomatic 57, cognitive 98): update has cyclomatic complexity 57 and cognitive complexity 98; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GaussianSplatPrimitive.js"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"52f7deee0786c5912b3a940c5c5d7521d31203c5d24853a9dc84441942a4a4b1"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function createLayeredEntries (cyclomatic 56, cognitive 105): createLayeredEntries has cyclomatic complexity 56 and cognitive complexity 105; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/createElevationBandMaterial.js"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7ebf7f584cc0b7647e0f635e3943c5c519a75f48f45583ae8dc673de8d064e"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function update (cyclomatic 54, cognitive 54): update has cyclomatic complexity 54 and cognitive complexity 54; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelEllipsoidShape.js"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaba0cbaacc93a7593a2ac0c0cebdedba9930238c10e41a086d9cd8542a19d80"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function Texture (cyclomatic 53, cognitive 63): Texture has cyclomatic complexity 53 and cognitive complexity 63; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Renderer/Texture.js"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a7683aa6be72c4e8c30dab573cf2dd4bc06f21fe047c102d2e534bbbd3fd5f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function handleZoom (cyclomatic 51, cognitive 95): handleZoom has cyclomatic complexity 51 and cognitive complexity 95; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"d02883400ad5712b3bcc17fc2e015b7fc378bd6956c0771d7234064fcfb2f287"}},{"ruleId":"R3","level":"warning","message":{"text":"Large Files: 516 file(s) over 400 lines (counted as significant lines \u2014 blank lines excluded \u2014 over production source only, tests excluded), largest first: packages/engine/Specs/DataSources/CzmlDataSourceSpec.js (9570), packages/engine/Specs/Scene/Cesium3DTilesetSpec.js (6087), packages/engine/Specs/DataSources/KmlDataSourceSpec.js (5259), packages/engine/Source/Scene/Scene.js (4971), packages/engine/Source/DataSources/CzmlDataSource.js (4888), packages/engine/Specs/Scene/Model/ModelSpec.js (4597) (\u002B510 more)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cecee31b569df4f07e06db732f1ca037af27b5afef9023da51f9673d931a142f"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Scene.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"845f65c4664f8218bf5737c6e6eb7dea92817aefc2c7c5bfe0cf451b707e9ffe"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/CzmlDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1be0f9e7f2161de7062124affa9bc16183217e4bf8b81448f5c81e255b271e6f"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/KmlDataSource.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c809a05ba7d35af96583329e1cbd1eb1a4300fe0a2c46d3676cf11d8acad192"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Camera.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c7d04131ab0bd8444b844159da36f2fcf7addddd86fb6a2a217fe695312e9c"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileset.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe532e426fd69fe4052caec5d800c09419bdd54fa402db841d157fa33e7dd47"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Model/Model.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11157b0e7be251d819b06bd5abcaaf1cabad04676cf71139846a7e4491253db"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GltfLoader.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b147847109d6db01870a844c96b291c229f8b36205a6ed4e724a95e0e63dfbbf"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GlobeSurfaceTileProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80c13b039ff3a4641a72206d003376dbeed1e3f84814e988a56e0fe778d5990b"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/GeometryPipeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c685cada5362b3779e015f9347244e2014629396782451cf0c325a6987d0f0a"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Matrix4.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6662e27325579831729a4c235c711ff43cb32d63b91c0b9cf1da1702ff2842"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ScreenSpaceCameraController.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b85d6bcba71cffcbbc0c755668da837a8e0bc691e8aac588f14b8f41c662c42"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTile.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ef8b827c08087334d244caca6e3372917c8390f944f1b743b3ab5a919f8f69d"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Color.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f3285e1610d7be18f199c642ea86cd02c38a718a238c20be80f4f2b43c51db4"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Expression.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a73085d688ad4cf6331bd60e44747311fd7d413d847c55c99b9d8788ecfd737"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/TerrainFillMesh.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f428548248c5e6250e26a9d7a8b55eebd33ab24c11519a269501870782c0b839"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BillboardCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecbad76768f7ec7b62fc8cb6ef455c7095d8d2657adbd5152232d360f41d64fd"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/VoxelPrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a7cd0287c90cbcfd4ce7bd72ee7e99cf15e9b457cdb702b546f7235526d0a69"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Viewer/Viewer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d017bdc1d47bee12e7d679a31887f4b3638ecee0347f75b2c9feb9892e569e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ShadowMap.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f654818f3650c13954aed8db9c41fe758632a4db7049af5b8e01b1069c758b43"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PolylineCollection.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af4d44ebfbc19c91ad9745c162b5529d2a8fd94a06319f7081e201f013bfaf14"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f630dd8b19a008c61c0647638ce08edab543e962f7bc3d27d76e7ca0eb559ce"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/ImageryLayer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3b1f9f0b81a23c96afb16501a540cdd5d9a987fba5bbe33f566df0fe7385e7"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Picking.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcdabc2b5d1117269d8a69665b23f9640eeb66cc361010cb1f79abaa57219cfc"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/GroundPolylineGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"70ac4a0031ef92e43da67100fa23e50e80d7acb56befccedcb406d9ae42af8a4"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Workers/decodeI3S.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"956751ac1f5f9c438bdb88bb92b887210fb822c9871ae9bb9c2032383164524e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Label.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b77bc112528490b68a52246d485ec37d1b6e18be3adca5f8d5982b52c17a9f"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Widget/CesiumWidget.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b55b766a9163601e41f720a0da3d2590cefb481b8856f014cbd45b3b69698610"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Billboard.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b00ff80b1fa3ec8d4637ec89bf1ed5869e089938e522e4741b5bc7258aa3bf"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspectorViewModel.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eafbb329402fb1511a8d34eb428c18e043e0d7629e1c23f466a3550c8c0e006"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/QuadtreePrimitive.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d181545daf739d0216df7203f3efe7afb8933c93085813a3f33faaf44f9541d3"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c75d31b3adcd5f16f5a7f984d1161b114b2be9f64cd820fa8ee6e82c92bd782"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/exportKml.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef1846dd848384367d25f47abe94e6ab40ccdfda36fa6add43b8dd6b764b578b"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/BoundingSphere.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9cf2e0186260f2a14d2dba31ec262a6a87df1915ae798b534820da6b29d9ffb"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Cesium3DTileStyle.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a40dd04c2d5ae2fae5fee9ea33d281c7aef1a2bd2696882d6fdf6af01987201"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/RectangleGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc010f1ded0f9050344415accdd64d74dada989b621e72ea501a872f41ca2cd"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/DataSources/PathVisualizer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3915cd2c8b3f8494ded3df387a0d9d4f2a3629f3099fcebe3ddc4d37a004a61"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloud.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f1a93689f640b8c5f53881cb406215292e145a9fe4507931d6108bc5ac02b87"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/MetadataClassProperty.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"666afe3c6d02f1c5ee3a5d8ba2d88e90487b46c033129001d09bef8c3993a89e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Core/CesiumTerrainProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fa382f5f08f26f4388914786e176a193e3d906bb6c5a37d0e27b94a1e15958"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/CorridorGeometry.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3ba21403611745651859b83e9d727a1ac0a38e13263948c9b7ff3ee7e4d3868"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~512 LoC): no import path from any entry point (298 application, 19 tooling, 802 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tools/jsdoc/cesium_template/publish.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10eb61526169e0d0f95f66ab4035e52f97a1672858fc2713be5856ae892178f"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~96 LoC): no import path from any entry point (298 application, 19 tooling, 802 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Tools/jsdoc/cesiumTags.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"790244155f1b3ed524da2bbb545bf47bc08b7bdb25b0dbc420ac461b9b37aeb2"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027earcut\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/PolygonPipeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f0939eec350a44a005346e3e9d505884c27c038409f94c83b527ae6c132128e"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027mersenne-twister\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/Math.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b867c7e01c17135fdb73d8b08e5ab94c400833cd88720529a7e91bf29def4c99"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027urijs\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/Source/getAbsoluteUri.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e518552fc419e15f22958919bfe28037f438c5563a1e0c937bdef01b0edca35b"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027gulp-clean-css\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"17a81d47b0e6c94fd1105e0c9dab88835da4c3d74a98974429424527fce2c801"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027gulp-insert\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d6421b479392b7704274858a7a021fa9139a500b33bd774a7de60fc74b746efc"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027gulp-replace\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c4c390d5f28f4b1b221df80d6ba30dd7879191ca0a114f2e533d06172a5e898e"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (2 files): packages/engine/Source/Scene/BatchTableHierarchy.js \u2192 packages/engine/Source/Scene/Cesium3DTileBatchTable.js \u2192 packages/engine/Source/Scene/BatchTableHierarchy.js"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/BatchTableHierarchy.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e50efdee9380ffab576b4571d500e9a9d1d11fb46bef53f197dd6878389a60"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (2 files): packages/engine/Source/Scene/Google2DImageryProvider.js \u2192 packages/engine/Source/Scene/IonImageryProviderFactory.js \u2192 packages/engine/Source/Scene/Google2DImageryProvider.js"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/Google2DImageryProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4d7c5a26c8c374e8b1d151ba6865d49634be2b9d75c5cd7d410aa33c44c723"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (3 files): packages/engine/Source/Scene/I3SDataProvider.js \u2192 packages/engine/Source/Scene/I3SLayer.js \u2192 packages/engine/Source/Scene/I3SNode.js \u2192 packages/engine/Source/Scene/I3SDataProvider.js (one verified cycle inside a mutually-dependent group of 6 files)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/I3SDataProvider.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"efc1d29ef66b60330ae581c796a3901693339bd655055bdd6c2ad5cb5717756f"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (1 files): packages/engine/Source/Scene/PointCloudEyeDomeLighting.js \u2192 packages/engine/Source/Scene/PointCloudEyeDomeLighting.js"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/PointCloudEyeDomeLighting.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"adef2c4a7b56def1d5ef041be2c30dba8f8676fd8d6b48689d610c549c2fb26f"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (2 files): packages/sandcastle/src/Gallery/GalleryItemStore.ts \u2192 packages/sandcastle/src/Gallery/applyHighlight.tsx \u2192 packages/sandcastle/src/Gallery/GalleryItemStore.ts (one verified cycle inside a mutually-dependent group of 3 files)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/Gallery/GalleryItemStore.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c3f586ee582c88efde753cca557f57cce6f70870c8ddeaa9b5232e08097462b"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (2 files): packages/sandcastle/src/copilot/ai/clients/AIClientFactory.ts \u2192 packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts \u2192 packages/sandcastle/src/copilot/ai/clients/AIClientFactory.ts"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/sandcastle/src/copilot/ai/clients/AIClientFactory.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"39dd720924a1c46cad58f5413587069b649a9c7a4f9c2e4c42b9cbe2145bd92f"}},{"ruleId":"SC1","level":"warning","message":{"text":"JavaScript dependencies are not locked: No package-lock.json / yarn.lock / pnpm-lock.yaml / bun.lock \u2014 JS installs aren\u0027t reproducible (SSDF PW.4.4). Commit your package manager\u0027s lockfile and install from it (\u0060npm ci\u0060, \u0060yarn --immutable\u0060, \u0060pnpm i --frozen-lockfile\u0060 or \u0060bun i --frozen-lockfile\u0060). Advisory \u2014 never scored."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"40a08798dc9f9c819eaa9f7c084938e1cf2517a9281aed2c31563d6f7d5ba90d"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!line.trim() || !line.startsWith(\u0022data: \u0022)\u0060 appears character-identically in 2 files \u2014 packages/sandcastle/src/copilot/ai/clients/GeminiClient.ts, packages/sandcastle/src/copilot/ai/clients/VertexAIClient.ts. 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":"packages/sandcastle/src/copilot/ai/clients/GeminiClient.ts"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a32ec19fd4eb4d916adebe4bb7f14a303e13bf747616e9d7410289fd0d5eaea"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060name.localeCompare(\u0022name\u0022) === 0 || name.localeCompare(\u0022objname\u0022) === 0\u0060 appears character-identically in 2 files \u2014 packages/sandcastle/gallery/i3s-3d-object-layer/main.js, packages/sandcastle/gallery/i3s-feature-picking/main.js. 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":"packages/sandcastle/gallery/i3s-3d-object-layer/main.js"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0c5f54818b390c222eaee8750bf9b418d59cc0642e63c27ba9fc57480e3e9fe"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060typeof lines !== \u0022string\u0022 \u0026\u0026 !Array.isArray(lines)\u0060 appears character-identically in 2 files \u2014 packages/engine/Source/Renderer/ShaderBuilder.js, packages/engine/Source/Renderer/ShaderFunction.js. 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":"packages/engine/Source/Renderer/ShaderBuilder.js"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"a897731738b862d4d096c012a4d0e1c3ddd6cb05a40d067e334e3a5bdc744540"}},{"ruleId":"X6","level":"note","message":{"text":"Hand-rolled JSON/XML parsing via regex: A regex whose pattern encodes JSON/XML syntax is parsing a structured format by hand \u2014 malformed or differently-typed content (e.g. \u0060\u0022amount\u0022: \u00225\u0022\u0060 as a string) silently mis-parses instead of failing validation. This JavaScript/TypeScript code already uses a real parser in the same package; use it here too."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GetFeatureInfoFormat.js"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4f761e3464600abf26c18a2556ac72354526379af4778c1f538bcdc0e4dba7"}},{"ruleId":"X6","level":"note","message":{"text":"Hand-rolled JSON/XML parsing via regex: A regex whose pattern encodes JSON/XML syntax is parsing a structured format by hand \u2014 malformed or differently-typed content (e.g. \u0060\u0022amount\u0022: \u00225\u0022\u0060 as a string) silently mis-parses instead of failing validation. This JavaScript/TypeScript code already uses a real parser in the same package; use it here too."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GetFeatureInfoFormat.js"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"913728f80dfeab0cfb9706fb8257d6d11bb967b0b142144fcc21467884aeae4a"}},{"ruleId":"X6","level":"note","message":{"text":"Hand-rolled JSON/XML parsing via regex: A regex whose pattern encodes JSON/XML syntax is parsing a structured format by hand \u2014 malformed or differently-typed content (e.g. \u0060\u0022amount\u0022: \u00225\u0022\u0060 as a string) silently mis-parses instead of failing validation. This JavaScript/TypeScript code already uses a real parser in the same package; use it here too."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/engine/Source/Scene/GetFeatureInfoFormat.js"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"3222f7a6068750920a65aae8c493d8fece3e0e7fca0a2e83e046b43cad03eca2"}}],"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-125","guid":"98717707-96bf-ca5b-9568-8d1d257574c1","name":"CWE-125","shortDescription":{"text":"CWE-125"},"helpUri":"https://cwe.mitre.org/data/definitions/125.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-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-319","guid":"7af97476-9f0d-4458-9163-3d2043918a1a","name":"CWE-319","shortDescription":{"text":"CWE-319"},"helpUri":"https://cwe.mitre.org/data/definitions/319.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"CWE-506","shortDescription":{"text":"CWE-506"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-522","guid":"71fb233e-ce6a-ae57-9419-ef8373540b09","name":"CWE-522","shortDescription":{"text":"CWE-522"},"helpUri":"https://cwe.mitre.org/data/definitions/522.html"},{"id":"CWE-552","guid":"3492436b-eca2-9c54-9ba3-5dade427c903","name":"CWE-552","shortDescription":{"text":"CWE-552"},"helpUri":"https://cwe.mitre.org/data/definitions/552.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-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":360,"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."]}]}