{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D18","name":"Solution Shape","shortDescription":{"text":"Solution Shape"},"helpUri":"https://codehealth.canine.dev/dimensions/D18"},{"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":"D24","name":"Comment Value","shortDescription":{"text":"Comment Value"},"helpUri":"https://codehealth.canine.dev/dimensions/D24"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"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":"D33","name":"JS/npm Dependency Vulnerabilities","shortDescription":{"text":"JS/npm Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D33","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"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":"D37","name":"Vulnerability-disclosure Policy","shortDescription":{"text":"Vulnerability-disclosure Policy"},"helpUri":"https://codehealth.canine.dev/dimensions/D37","relationships":[{"target":{"id":"CWE-1059","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1059"]}}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.SetChartProperties (cyclomatic 805): ChartHelper.SetChartProperties has cyclomatic complexity 805 (threshold 15). Of this number, 794 points are the body\u0027s own statements and 11 belong to 8 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":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a98896abe8d6a1941e05786edc82a3c3f21f78dbb6f64429d2b9b1bdc4660d0"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetRunOrShapeProperties (cyclomatic 565): PowerPointHandler.SetRunOrShapeProperties has cyclomatic complexity 565 (threshold 15). Of this number, 560 points are the body\u0027s own statements and 5 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":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"97143b7f931371e98e470acf62ef6069249be19688abf5823c141a7cdbdd3fec"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalFunction (cyclomatic 545): FormulaEvaluator.EvalFunction has cyclomatic complexity 545 (threshold 15). Of this number, 527 points are the body\u0027s own statements and 18 belong to 8 function literals inside it that branch. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"72b3df8868f45a6ac778bb86caef5db950cf828cb49cdde9f3bc5038cf678089"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddParagraph (cyclomatic 543): WordHandler.AddParagraph has cyclomatic complexity 543 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5979f6a4be83abc324f014f5e0ac19e2bdd84a9024fc938c23e175b48511c2d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ParagraphToNode (cyclomatic 468): WordHandler.ParagraphToNode has cyclomatic complexity 468 (threshold 15). Of this number, 442 points are the body\u0027s own statements and 26 belong to 22 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3838}}}],"partialFingerprints":{"codehealthFindingId/v1":"3413ac8f8dae3cdc99a19c3bf2430b1c08b7e1773bba9c6c3c34f23fd74f7380"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddPart (cyclomatic 461): PowerPointHandler.AddPart has cyclomatic complexity 461 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f90d5a83452b30ae73d57a7578ecd4cf6dceb94d8f5a619872767a121ebfb6"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.QueryDispatch (cyclomatic 401): WordHandler.QueryDispatch has cyclomatic complexity 401 (threshold 15). Of this number, 397 points are the body\u0027s own statements and 4 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":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9feab7da113f555770fd96c670cdf5bf49a763cb659a8d3702e235942fcb231"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.ReadChartProperties (cyclomatic 396): ChartHelper.ReadChartProperties has cyclomatic complexity 396 (threshold 15). Of this number, 374 points are the body\u0027s own statements and 22 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":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f01370de0140cbbfd030e3bc78f1d44c08ba39adc24cf1d47ef0eb62253e941"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.Get (cyclomatic 393): PowerPointHandler.Get has cyclomatic complexity 393 (threshold 15). Of this number, 390 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b146a4c89ffe17b1645b240f21131660450d621652e51763c64fd4ccc31755e"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ShapeToNode (cyclomatic 346): PowerPointHandler.ShapeToNode has cyclomatic complexity 346 (threshold 15). Of this number, 340 points are the body\u0027s own statements and 6 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"72cc6cf6067c0e2deb6f3a8a34d948787cf8c2241a3c7ff8b6891a3de31e8d61"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddRun (cyclomatic 308): WordHandler.AddRun has cyclomatic complexity 308 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":2162}}}],"partialFingerprints":{"codehealthFindingId/v1":"468452c4d08b1eb82d99add1574bdd6439172ced7939bde65dc4ef5e27c25039"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.ParseCommand (cyclomatic 297): FormulaParser.ParseCommand has cyclomatic complexity 297 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":1284}}}],"partialFingerprints":{"codehealthFindingId/v1":"9df06580c58fe4e399c215e9ded6c30468068348f13c760df35e892ce2c1d7c8"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetTableCellProperties (cyclomatic 278): PowerPointHandler.SetTableCellProperties has cyclomatic complexity 278 (threshold 15). Of this number, 277 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":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":2699}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba1213687e639bb4d690b44a2a41eb14d2f8cad287c22b4a4348dec191b2e3e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetSheetLevel (cyclomatic 250): ExcelHandler.SetSheetLevel has cyclomatic complexity 250 (threshold 15). Of this number, 246 points are the body\u0027s own statements and 4 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"799533f122dc7d382d260352c8239aab973abd075a9ee68fee87882d8d7fa92c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddShape (cyclomatic 247): PowerPointHandler.AddShape has cyclomatic complexity 247 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c29d988fd1a45651a1782aefa0269498ac1f12fbfefb5b45d7446fe2639b3fd"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderBarChartSvg (cyclomatic 241): ChartSvgRenderer.RenderBarChartSvg has cyclomatic complexity 241 (threshold 15). Of this number, 239 points are the body\u0027s own statements and 2 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36564fecd11aca5e59699cf01ed94c0489bb80b26c05d572eb4d6371d288c89"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.Get (cyclomatic 228): ExcelHandler.Get has cyclomatic complexity 228 (threshold 15). Of this number, 221 points are the body\u0027s own statements and 7 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":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec6d09e6a4da5de184a79e573d4e7a5a860dfbeb24313fe8287fad7fc9e46089"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.Get (cyclomatic 223): WordHandler.Get has cyclomatic complexity 223 (threshold 15). Of this number, 222 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":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"13bcdae097306f800ba522fc37851ae73a4e1b7c9b8c43b6934856c164b563c8"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.ExtractChartInfo (cyclomatic 208): ChartSvgRenderer.ExtractChartInfo has cyclomatic complexity 208 (threshold 15). Of this number, 204 points are the body\u0027s own statements and 4 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":3325}}}],"partialFingerprints":{"codehealthFindingId/v1":"1713d7da1f7d6a4400e0bbdf810cec635c8b55972bf8b793f01ac744b791725e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyRunFormatting (cyclomatic 205): WordHandler.ApplyRunFormatting has cyclomatic complexity 205 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.RunFormat.cs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c9b4cb2c63f62f1dbe0a3d786b64fbea74c4b1f2494b75e8e3e3a9d356250d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.QueryDispatch (cyclomatic 202): ExcelHandler.QueryDispatch has cyclomatic complexity 202 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c304139c61341bc9dfab8bb54c03e23d3ccce5c3c21ae4cf1a075ff46d51c6"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.PresetGeometryToCss (cyclomatic 201): PowerPointHandler.PresetGeometryToCss has cyclomatic complexity 201 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2384}}}],"partialFingerprints":{"codehealthFindingId/v1":"48ddad4daac754e2b94ed8e6bfe3a5233325784b624b440fef7d2ed0ea4e9edf"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.QueryDispatch (cyclomatic 194): PowerPointHandler.QueryDispatch has cyclomatic complexity 194 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":1547}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e742a9cfa0305edaff6ada0e82c4d1c9fd261675c13e8b68c82cbfd70af0dc"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.Remove (cyclomatic 192): WordHandler.Remove has cyclomatic complexity 192 (threshold 15). Of this number, 181 points are the body\u0027s own statements and 11 belong to 11 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":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc349450693be5c2b60c6a6d11d089267a32e26845e2debf713d6d1f338f1fa"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RunToNode (cyclomatic 188): WordHandler.RunToNode has cyclomatic complexity 188 (threshold 15). Of this number, 186 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":2081}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eaa46c204b939831519bc573dce7a3af3eb1cc9c6f238fc13d7963305392f84"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.Remove (cyclomatic 186): ExcelHandler.Remove has cyclomatic complexity 186 (threshold 15). Of this number, 184 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b015d0c6272b73f93e5cb317cd7ecdf6f5966045f741481f922ef2c1969f3a"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderShape (cyclomatic 181): PowerPointHandler.RenderShape has cyclomatic complexity 181 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"e63ccbc85ac7d291e8d27a31cd05214ce39a46d55e963ea84e71a6de57d9521c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.NavigateToElement (cyclomatic 181): WordHandler.NavigateToElement has cyclomatic complexity 181 (threshold 15). Of this number, 155 points are the body\u0027s own statements and 26 belong to 15 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"4254299cee241eab18d588d5945776dd0cbe6fd53eac14b43d8689252626cd02"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddConnector (cyclomatic 171): PowerPointHandler.AddConnector has cyclomatic complexity 171 (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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb497ac8e7c5afaaaa677b11516bc6bff240bcac8d9a3cdd05b6e8039654fe3"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderBodyHtml (cyclomatic 171): WordHandler.RenderBodyHtml has cyclomatic complexity 171 (threshold 15). Of this number, 169 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":2461}}}],"partialFingerprints":{"codehealthFindingId/v1":"082db100e9576d25c3d3d0870e7f4bf29ab5ba13f4f9497b200bdc3f281a058c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitTable (cyclomatic 167): WordBatchEmitter.EmitTable has cyclomatic complexity 167 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Table.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"44026c0a66cacdda5a75f2718d05676cfc046313b85c932601bc19d1be9d8c4f"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddStyle (cyclomatic 167): WordHandler.AddStyle has cyclomatic complexity 167 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":1137}}}],"partialFingerprints":{"codehealthFindingId/v1":"c595b002f0db0a888d8e5393cd48e4aca462d3a8cc99f125b4c7c2c7d8cfbf03"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderTableHtml (cyclomatic 163): WordHandler.RenderTableHtml has cyclomatic complexity 163 (threshold 15). Of this number, 150 points are the body\u0027s own statements and 13 belong to 5 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"915a3abfb728830f81ec1900c292fd350b7bbf0ce25d7f9ea2a10e8496817652"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RenderGeneralPivot (cyclomatic 162): PivotTableHelper.RenderGeneralPivot has cyclomatic complexity 162 (threshold 15). Of this number, 159 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":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1754}}}],"partialFingerprints":{"codehealthFindingId/v1":"749c59109feb847d48e989b8a652c43ff409a1498fe4c44da928d0c70b946cf0"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddPicture (cyclomatic 162): PowerPointHandler.AddPicture has cyclomatic complexity 162 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"e10e395190d826d107bc8352c4b5cfcba9a4f1ed72ccbabe0f42104116a1cfa5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddTable (cyclomatic 160): WordHandler.AddTable has cyclomatic complexity 160 (threshold 15). Of this number, 158 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":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f5368915c80fd0ad6feecb1ef72de2ac69efd893bebb0c727260cd915a014f"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.SetAxisProperties (cyclomatic 158): ChartHelper.SetAxisProperties has cyclomatic complexity 158 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Axis.cs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"2007e17fcd826acc8715d63595174f10d1d38ef331fb34ca97f731b5653054ff"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddSection (cyclomatic 158): WordHandler.AddSection has cyclomatic complexity 158 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75149131052d02052a13ddef8e5ffcf8b6edb00ca5c6f7c230ecff090e452ec"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElementTableCell (cyclomatic 158): WordHandler.SetElementTableCell has cyclomatic complexity 158 (threshold 15). Of this number, 155 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":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1755}}}],"partialFingerprints":{"codehealthFindingId/v1":"d615725dc12425861b87b2c4749d7b80f809923a0622e8edeef1bf3b6cce6b76"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildViewCommand (cyclomatic 154): CommandBuilder.BuildViewCommand has cyclomatic complexity 154 (threshold 15). Most of this is not in the body itself: 1 of the 154 points is its own statement and the rest belongs to 2 function literals inside it that branch (lines 57, 116). 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":"src/officecli/CommandBuilder.View.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"3814225b16356dac2a4531d489975917597a257f3f7d9a4e500cde39a25d81b8"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.CellToNode (cyclomatic 149): ExcelHandler.CellToNode has cyclomatic complexity 149 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"05cd8fda42493d26d962942fcabb4a5513c73f9806a5c27631001a52b1c1273b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ApplySheetRangeMutations (cyclomatic 149): ExcelHandler.ApplySheetRangeMutations has cyclomatic complexity 149 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6be916506189408562ad86aff0b539bd360234a486de13808d175edb6bb342"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddRun (cyclomatic 146): PowerPointHandler.AddRun has cyclomatic complexity 146 (threshold 15). Of this number, 143 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"fab1dec18adc52376f530ac783704f97baf5b774b15cf9fbd4fe5b1402894238"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ApplyCellProperties (cyclomatic 139): ExcelHandler.ApplyCellProperties has cyclomatic complexity 139 (threshold 15). Of this number, 135 points are the body\u0027s own statements and 4 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.Cells.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ecf18acde4e03cf70c26456cfbe6968358401dd21f38dec79d8e0541b344e2e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetParagraphInlineCss (cyclomatic 138): WordHandler.GetParagraphInlineCss has cyclomatic complexity 138 (threshold 15). Of this number, 136 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9758ec2d055cfc9649b1fd8af23529c00095cadad6afa595ae4b9e015b8d9f7"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElementTable (cyclomatic 136): WordHandler.SetElementTable has cyclomatic complexity 136 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":2654}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac48bacd137f53cfdd8aab7ce4d490daa9cb77480a420d6345efed5d9ba3086"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddField (cyclomatic 134): WordHandler.AddField has cyclomatic complexity 134 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"32199fe3620928f6a00aacb1f2625bd1bd12e3801d1ff957b8118b661005ce05"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderRunHtml (cyclomatic 134): WordHandler.RenderRunHtml has cyclomatic complexity 134 (threshold 15). Of this number, 123 points are the body\u0027s own statements and 11 belong to 5 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"144c83c01a13afb2b64c5792edafba8003976f14c1272960b6a51285003e6712"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.Remove (cyclomatic 133): PowerPointHandler.Remove has cyclomatic complexity 133 (threshold 15). Of this number, 132 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"af84a18e5026c6bcf80f0ed0a945786d33b0f70f8b1cbe4cb6dd97658acde44f"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartExBuilder.HandleSetKey (cyclomatic 131): ChartExBuilder.HandleSetKey has cyclomatic complexity 131 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.Setter.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e05228f499b9d5a4cd5b397bc0e15ea7db9e15e5dbbc7c0ffe0e0ff9064504f"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderLineChartSvg (cyclomatic 129): ChartSvgRenderer.RenderLineChartSvg has cyclomatic complexity 129 (threshold 15). Of this number, 128 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"e262a4a478a03d6bf69580f0b0163af9f9ea5d108cd6a1d0727b25d9357147fa"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.TrySetSectionLayout (cyclomatic 129): WordHandler.TrySetSectionLayout has cyclomatic complexity 129 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.SectionLayout.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a9e03398a031eb77aeac8dff08207e4246264460da7e04148ce3a394e329582"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddPicture (cyclomatic 126): WordHandler.AddPicture has cyclomatic complexity 126 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c0666b62eff48c49ef32c61181d7c7518d8c27edf5e922fb6e6b4e9e945a33"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElementRun (cyclomatic 123): WordHandler.SetElementRun has cyclomatic complexity 123 (threshold 15). Of this number, 121 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c31bdb2a249183cf78d10cc924cadacc4b83d9a46141fec261b76dd635393b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddTable (cyclomatic 121): ExcelHandler.AddTable has cyclomatic complexity 121 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"b40145e010a5256d6996b7e92739278e4acd6196eb6fe48d11ab2ef1c9e12e80"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderTextBody (cyclomatic 121): PowerPointHandler.RenderTextBody has cyclomatic complexity 121 (threshold 15). Of this number, 117 points are the body\u0027s own statements and 4 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b10fb7be8a637646dcc9b9d0d5df10547c6954eb71b6f36f6ea48812c22afc1"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetRunInlineCss (cyclomatic 120): WordHandler.GetRunInlineCss has cyclomatic complexity 120 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"d327eca1b6d1d0abc5cbe85d239565123e1f8a75e3cc5e0e59b219fadeb87811"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.ExecuteView (cyclomatic 119): ResidentServer.ExecuteView has cyclomatic complexity 119 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc3c67df896e1fbbc9fb37b980b018595fe5ce4abb4f275c6e7ec227277a21b"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyPicturePropertiesCore (cyclomatic 116): PowerPointHandler.ApplyPicturePropertiesCore has cyclomatic complexity 116 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"58141e50c435ee7d476e0f708f3750fdc2008a76cff467cdbb8f107b749b7897"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyParagraphLevelProperty (cyclomatic 116): WordHandler.ApplyParagraphLevelProperty has cyclomatic complexity 116 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd380fa5f49943399fc1fc2c8ac9989628f9367fa3ea70c5e9a7786c2fbcb816"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyConnectorProps (cyclomatic 115): PowerPointHandler.ApplyConnectorProps has cyclomatic complexity 115 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"5689928e7fe32daeadeda95ebb648039e72319c38415fc0e9480af62569e4f87"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElementParagraph (cyclomatic 115): WordHandler.SetElementParagraph has cyclomatic complexity 115 (threshold 15). Of this number, 114 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":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1135}}}],"partialFingerprints":{"codehealthFindingId/v1":"2144b52c1177167d557b70e56e78ebf0849fa3c9ec8485cc337cea9ac07f6dee"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.ToLatexByName (cyclomatic 114): FormulaParser.ToLatexByName has cyclomatic complexity 114 (threshold 15). Of this number, 112 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":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bac34737758a1f6fdf39a57b959c9232a04d21a747558e5c2bc7c12f01f08f7"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.SetPivotTableProperties (cyclomatic 114): PivotTableHelper.SetPivotTableProperties has cyclomatic complexity 114 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Set.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"717be19684f9434b0de762e6ae61bb9564347e761e3283feddaef449aa1fca61"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.FilterEmittableProps (cyclomatic 114): WordBatchEmitter.FilterEmittableProps has cyclomatic complexity 114 (threshold 15). Of this number, 111 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":"src/officecli/Handlers/Word/WordBatchEmitter.Filters.cs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af7257e0a829d427832b96e2fe55769ccb22c8a9c6d7f9d11dad64c5ebcb101"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitFieldRun (cyclomatic 114): WordBatchEmitter.TryEmitFieldRun has cyclomatic complexity 114 (threshold 15). Of this number, 113 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2183}}}],"partialFingerprints":{"codehealthFindingId/v1":"249d06a0c5b08e56bdbd42f7f9b3109061a648841337abb02c8474cf17a759c6"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.BeginTrackChangeIfRequested (cyclomatic 111): WordHandler.BeginTrackChangeIfRequested has cyclomatic complexity 111 (threshold 15). Of this number, 86 points are the body\u0027s own statements and 25 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":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c9e424f92b1339c8752d2007b554fc175bf281b2579dc3c642932c7125e4b1c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderPicture (cyclomatic 108): PowerPointHandler.RenderPicture has cyclomatic complexity 108 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1391}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c1ddc3461133151e5b26fefbe4824ead87d7dcafe3001634545585bced72f45"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.ExecuteBatchItem (cyclomatic 107): CommandBuilder.ExecuteBatchItem has cyclomatic complexity 107 (threshold 15). Of this number, 106 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":"src/officecli/CommandBuilder.cs"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc83c985dcfbe2c7ae7f56fa803e0f81cbd7931202215a0ebb0cc27dad3b60bf"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderRun (cyclomatic 106): PowerPointHandler.RenderRun has cyclomatic complexity 106 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"633d7a66741068104248e3616b28d898f6745f39b67ed25c223a7b9947494eba"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.TableToNode (cyclomatic 105): PowerPointHandler.TableToNode has cyclomatic complexity 105 (threshold 15). Of this number, 104 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":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"929b3967fd426f3b2c9402692b0c247f42ba0b456559b4c996556ee518681afc"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.PictureToNode (cyclomatic 105): PowerPointHandler.PictureToNode has cyclomatic complexity 105 (threshold 15). Of this number, 104 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":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":2579}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca06e00c8be717659091f6c9df336db1daf712bf41f5cdcb55d28ac3c61b906d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.CollapseFieldChains (cyclomatic 105): WordBatchEmitter.CollapseFieldChains has cyclomatic complexity 105 (threshold 15). Of this number, 103 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":"src/officecli/Handlers/Word/WordBatchEmitter.Fields.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42329dc85c45ebf0ad3e1c7c63e1502a5e17cef336ce41249c12b23e6263e3d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.RenderSheetTable (cyclomatic 102): ExcelHandler.RenderSheetTable has cyclomatic complexity 102 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"ced45f3be3851ccb21c003561fc5c5c47fb92d8651f21dc4f6a7b7cb715a361b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetSectionPath (cyclomatic 101): WordHandler.SetSectionPath has cyclomatic complexity 101 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"546bb75a502b5e3e61071fbd851a36923a72680e8513d0f3e328f1b303425976"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildSetCommand (cyclomatic 100): CommandBuilder.BuildSetCommand has cyclomatic complexity 100 (threshold 15). Most of this is not in the body itself: 1 of the 100 points is its own statement and the rest belongs to one function literal inside it that branches (line 32). 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":"src/officecli/CommandBuilder.Set.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6f4e9cddfa3cd4c662967bf1bb622f6c8108ca349dce20c33f3fc3a1b1edffe"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitParagraph (cyclomatic 100): WordBatchEmitter.EmitParagraph has cyclomatic complexity 100 (threshold 15). Of this number, 66 points are the body\u0027s own statements and 34 belong to 8 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cd9350f795454ef6dddcb886f7d2278a3d0923e9151009773321b00daea4af0"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.TableToNode (cyclomatic 100): WordHandler.TableToNode has cyclomatic complexity 100 (threshold 15). Of this number, 97 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3013}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbf406153384397508734debac49fe16fa23dd5f55dc01a9e0a1479a447f5a6d"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ViewAsIssues (cyclomatic 98): PowerPointHandler.ViewAsIssues has cyclomatic complexity 98 (threshold 15). Of this number, 95 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":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f9f313c907dd4612662d441d478a01a143a3b35cfbd70079115f078e681410"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.Set (cyclomatic 97): PowerPointHandler.Set has cyclomatic complexity 97 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe89ddbe3081a758f2faca4c18d1417cbef028cbc24cd60217317cb214bbedb"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RenderMatrixPivot (cyclomatic 94): PivotTableHelper.RenderMatrixPivot has cyclomatic complexity 94 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1293}}}],"partialFingerprints":{"codehealthFindingId/v1":"27998e39c72d2bef5f9cf8e90bfe4bcf602dc85dd202203086bbfd5d0d35cb7b"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddParagraph (cyclomatic 94): PowerPointHandler.AddParagraph has cyclomatic complexity 94 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b4b751a33e8607c85fc0c9f09d816aaf00a9e0d79d3433a4d73e1ef0f4b086"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderAreaChartSvg (cyclomatic 93): ChartSvgRenderer.RenderAreaChartSvg has cyclomatic complexity 93 (threshold 15). Of this number, 92 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1995}}}],"partialFingerprints":{"codehealthFindingId/v1":"f28a8c97808b8afbcff04cb9b8bd340e230005744efe6f882de29d4a88a9afb0"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.Tokenize (cyclomatic 93): FormulaEvaluator.Tokenize has cyclomatic complexity 93 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"1742a0a0eda4dc9fed73ba79780a920bb10fc00cceefefbfc62793348f131369"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ReadCellProps (cyclomatic 93): WordHandler.ReadCellProps has cyclomatic complexity 93 (threshold 15). Of this number, 92 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6387}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8fbbfc735274bafb508619c1c67fcb78a43111d32d5dcec9edab366bd9236a7"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetRootNode (cyclomatic 91): WordHandler.GetRootNode has cyclomatic complexity 91 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a8e9db76cd693c407d46e1afbacae5a44a178a3ca1d7785a43cbb0fb6125542"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RenderPivotIntoSheetCore (cyclomatic 90): PivotTableHelper.RenderPivotIntoSheetCore 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":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2ad3279de0ed412b7a7b31d8b84e9acdf542a0cdc677a4d1a943b2e6f3bd76"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddCell (cyclomatic 90): WordHandler.AddCell has cyclomatic complexity 90 (threshold 15). Of this number, 89 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":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04ff0b62bdd28f932df3d22e37fa6a2e2f7aa3a3ae4129dbb088a79714974f8"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddFormField (cyclomatic 88): WordHandler.AddFormField has cyclomatic complexity 88 (threshold 15). Of this number, 85 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":"src/officecli/Handlers/Word/WordHandler.FormFields.cs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"90ab54a9c3851d30ba8b44f98c507d7ac18ee62b3360a8f01ba17116ec2a4892"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyTransition (cyclomatic 87): PowerPointHandler.ApplyTransition has cyclomatic complexity 87 (threshold 15). Of this number, 86 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"35cc62df2c4264a7bf6d5be9a7842d7460f3ecf7b519c8c16a36cda0da63e350"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.Set (cyclomatic 87): WordHandler.Set has cyclomatic complexity 87 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"6173299c8c1b8e56d28e96397c2eee13918e662892e36f6a533c6ecce4d66cbb"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetStylePath (cyclomatic 87): WordHandler.SetStylePath has cyclomatic complexity 87 (threshold 15). Of this number, 86 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":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":1639}}}],"partialFingerprints":{"codehealthFindingId/v1":"951a0a3bba252b14181d5c3e845b77facee4684e22d875a6dc3ed4261e75d230"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.HandleSeriesDottedProperty (cyclomatic 86): ChartHelper.HandleSeriesDottedProperty has cyclomatic complexity 86 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"44135edbca82961d91e02d217d73eeb559f9654066f4ff12b02ef5738777bf5e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddShape (cyclomatic 85): ExcelHandler.AddShape has cyclomatic complexity 85 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"0692abb9c4d5bb17283a188a51efa986566022fadeee38b0b2ada927114f6e70"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderConnector (cyclomatic 85): PowerPointHandler.RenderConnector has cyclomatic complexity 85 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1878}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0a9f354e4bbdff36c91695a7c03ae9a54de98be7494c2651c81c1f387d8780"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderChartSvgContent (cyclomatic 84): ChartSvgRenderer.RenderChartSvgContent 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4518}}}],"partialFingerprints":{"codehealthFindingId/v1":"97a94a37734accb87a7236605cc2e3bfa9e3c6f10e883aed61218b8af181b5fa"}},{"ruleId":"D1","level":"warning","message":{"text":"SchemaHelpRenderer.RenderHuman (cyclomatic 83): SchemaHelpRenderer.RenderHuman has cyclomatic complexity 83 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpRenderer.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"62fa3e65230f3568f3333487e5a059e106066019242c7d50d6bfd702d6410604"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildChartSpace (cyclomatic 82): ChartHelper.BuildChartSpace has cyclomatic complexity 82 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3a7dc67615b3693d2a26aa121690c3ea01162f76b4c67395fb94959c40fa910"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderTable (cyclomatic 82): PowerPointHandler.RenderTable has cyclomatic complexity 82 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Tables.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfd17c1ddc4dff3414f9fbb6732b997964fc731d3e5bece262298877cb3efa0"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddComment (cyclomatic 82): WordHandler.AddComment has cyclomatic complexity 82 (threshold 15). Of this number, 80 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"78532d1485914b58906e106eabf34b91d961df9c187626923832fd3693320a35"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveParagraphStyleCss (cyclomatic 82): WordHandler.ResolveParagraphStyleCss has cyclomatic complexity 82 (threshold 15). Of this number, 81 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ec6fc238738d8781e47d4912f850b9300a4d8fda675f08e12b735a4de16f5a"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelStyleManager.ApplyStyle (cyclomatic 81): ExcelStyleManager.ApplyStyle has cyclomatic complexity 81 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c56a0694619baa1857c7c441e068d23056ce2f09477508f5dd1d3d5b018636"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddEquation (cyclomatic 81): WordHandler.AddEquation has cyclomatic complexity 81 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":1785}}}],"partialFingerprints":{"codehealthFindingId/v1":"790dccd93eb0175f61371d8e207a3db358a69360acdc73e98715ad4a90a7469a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetFieldPath (cyclomatic 80): WordHandler.SetFieldPath has cyclomatic complexity 80 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"24445677a9e70ca20f260dbc3f1dd7abfed93317a5934bfed4edb947eabe75a4"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.EvaluateCfRule (cyclomatic 79): ExcelHandler.EvaluateCfRule has cyclomatic complexity 79 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1690}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e520d67238029a06bf5f6be68fe27aebe3187b558cef08542381cefee91577"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.BuildSectionNode (cyclomatic 79): WordHandler.BuildSectionNode has cyclomatic complexity 79 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":973}}}],"partialFingerprints":{"codehealthFindingId/v1":"4deb59c1b92c5198a5e003e31067425bd9dc6d7220237f43eecac7d22b2cdf6f"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ValidateParentChild (cyclomatic 78): WordHandler.ValidateParentChild has cyclomatic complexity 78 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e8b4d46824e03c680a00a114239b6314791c1edf0671a8460d5a925244a6bdd"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RebuildFieldAreas (cyclomatic 77): PivotTableHelper.RebuildFieldAreas has cyclomatic complexity 77 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Set.cs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c1c57d6ba1810bbe80a096b7e74eeb2513d0cc370bc574c5794034450c4d605"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetShapeNode (cyclomatic 77): ExcelHandler.GetShapeNode has cyclomatic complexity 77 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"02473fccf33073ba17b26e82b8e018fc09c9d1a6ecacf3b585644c7dc3b67389"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ApplyNumberFormatCore (cyclomatic 76): ExcelHandler.ApplyNumberFormatCore has cyclomatic complexity 76 (threshold 15). Of this number, 72 points are the body\u0027s own statements and 4 belong to 3 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3425}}}],"partialFingerprints":{"codehealthFindingId/v1":"340fd2e730458fa091660ee5079502e4afc0f3396649161eb97eb8565872ae4c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ViewAsIssues (cyclomatic 76): WordHandler.ViewAsIssues has cyclomatic complexity 76 (threshold 15). Of this number, 75 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":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff8d07a617e4f3426b5aa954899e4a6829086d304c096ce41f058eb52a6ac1da"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildBatchCommand (cyclomatic 74): CommandBuilder.BuildBatchCommand has cyclomatic complexity 74 (threshold 15). Most of this is not in the body itself: 1 of the 74 points is its own statement and the rest belongs to 2 function literals inside it that branch (lines 149, 189). 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":"src/officecli/CommandBuilder.Batch.cs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"47b86e16bc82d84cad243daf800accd57050c2503b0798515913ebbc7c46ae2e"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ReadPivotTableProperties (cyclomatic 74): PivotTableHelper.ReadPivotTableProperties has cyclomatic complexity 74 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Readback.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"0321a5018ccdbc611af6a1f9cdec752b58bdfccda32c061aa6d78d0a50b11f59"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitPictureRun (cyclomatic 74): WordBatchEmitter.TryEmitPictureRun has cyclomatic complexity 74 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2665}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dfc894cb01fa153f5aa6114b221a095850f644a0efd05eeaf11f09664826b29"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ViewAsHtmlCore (cyclomatic 74): WordHandler.ViewAsHtmlCore has cyclomatic complexity 74 (threshold 15). Of this number, 69 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"52374dbb6c2b0e55084c39fc894e4d0c1eb65a7208a9225d8dfe6f3882bd4bd0"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.CreatePivotTable (cyclomatic 73): PivotTableHelper.CreatePivotTable has cyclomatic complexity 73 (threshold 15). Of this number, 72 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":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"5819ea3600c95f3b6cd6bd1f2d586b232714d4226e1038be6d1cb77eaba5de4d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ViewAsIssues (cyclomatic 73): ExcelHandler.ViewAsIssues 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":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"441f0f5b8294f5e0188fb72bcf70749c1542029a3c381d91e28d6b05342ee4e2"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddGroup (cyclomatic 73): PowerPointHandler.AddGroup has cyclomatic complexity 73 (threshold 15). Of this number, 64 points are the body\u0027s own statements and 9 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"f75ae20c5438f648d8960777bc6ed0b72d0f45622eda9af6da75d43c8067ed3a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddSdt (cyclomatic 73): WordHandler.AddSdt 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":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2123}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d11497b2caf471d36b784523b14f40b51afa320d97fefa4caf856bdc230d5d"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitChart (cyclomatic 72): PptxBatchEmitter.EmitChart has cyclomatic complexity 72 (threshold 15). Of this number, 70 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Charts.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d667619260434d2b6da72d30d32aa16f09a88812d82f84b34cef3d28ad2d8360"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetTableCellInlineCss (cyclomatic 72): WordHandler.GetTableCellInlineCss has cyclomatic complexity 72 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":2219}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1ee32c4a8dc03012628b7894d9cea5d6981d9274d8028e2ec8bfc4c8e0e122"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.PopulateCfNodeFromRule (cyclomatic 71): ExcelHandler.PopulateCfNodeFromRule has cyclomatic complexity 71 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b82b822d450426b7d726475829edab2e50eab7d92349873584cb077ff94ce2"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddPlaceholder (cyclomatic 71): PowerPointHandler.AddPlaceholder has cyclomatic complexity 71 (threshold 15). Of this number, 68 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"61d5420743d50adbbe6c6bf191f110cfc62805d4840431465282b30551205659"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitTextbox (cyclomatic 71): WordBatchEmitter.TryEmitTextbox has cyclomatic complexity 71 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":3530}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cecd80b6b0821c5f7de9d8350b2515c10269f8a737952148adcb0b16e6b35d7"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetTableByPath (cyclomatic 70): ExcelHandler.SetTableByPath has cyclomatic complexity 70 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a94c5f6b0289a3f095be748a6123c502cb26469d7be9927fb4adc4416c5a29c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetTablePropsCore (cyclomatic 69): PowerPointHandler.SetTablePropsCore has cyclomatic complexity 69 (threshold 15). Of this number, 68 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Table.cs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"84212740925c001167e2134db4e305e19c3149f96ee9b9da16dea989162d35ec"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderParagraphContentHtml (cyclomatic 69): WordHandler.RenderParagraphContentHtml has cyclomatic complexity 69 (threshold 15). Of this number, 68 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dbc4e6618184674e161eb8b54b0e531e10237f5aac047637869f7fbf6d716ad"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RenderMultiColPivot (cyclomatic 68): PivotTableHelper.RenderMultiColPivot has cyclomatic complexity 68 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"729f79d98d7c7c2b6e445b65d5000a765bd24c507de9a1cbb11958ef529e9eee"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.Set (cyclomatic 68): ExcelHandler.Set has cyclomatic complexity 68 (threshold 15). Of this number, 66 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee5aee64f9657a4b012562076941453a6be526ef6a220f75b4fcc71c6ef45bcc"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.BuildChartProps (cyclomatic 68): WordBatchEmitter.BuildChartProps has cyclomatic complexity 68 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Charts.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7187cd02c2323bdb838a569acab003dfde65392fe83ccb0821ae1b6b2bf849c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddLvl (cyclomatic 68): WordHandler.AddLvl 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2425}}}],"partialFingerprints":{"codehealthFindingId/v1":"52fb2c0e8185bd65acb2c21b326091e719edfbbe813d29428ce092f2992bc9ff"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildAddCommand (cyclomatic 67): CommandBuilder.BuildAddCommand has cyclomatic complexity 67 (threshold 15). Most of this is not in the body itself: 1 of the 67 points is its own statement and the rest belongs to 4 function literals inside it that branch (lines 57, 28, 151, \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":"src/officecli/CommandBuilder.Add.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"799f553c7f640ac200c1a754dc2cd8da4be75e04d67dd19b7463fded817e72eb"}},{"ruleId":"D1","level":"warning","message":{"text":"OutputFormatter.EnrichFromMessage (cyclomatic 67): OutputFormatter.EnrichFromMessage has cyclomatic complexity 67 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/OutputFormatter.cs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"a52bef79d4c40b6be796be0ebcff7b7f137024107a746180feb0bca30ed8562e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.Move (cyclomatic 67): ExcelHandler.Move has cyclomatic complexity 67 (threshold 15). Of this number, 66 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ff2535eb10505253c70ae481292c5ee606db6f8b8c052de7ea153dccef5ff4"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ProcessFindInParagraph (cyclomatic 67): WordHandler.ProcessFindInParagraph has cyclomatic complexity 67 (threshold 15). Of this number, 65 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ef71160508352af72a4a82f4a179039fada941dfb86ae704bd235f873dc77ab"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetShapeByPath (cyclomatic 66): ExcelHandler.SetShapeByPath has cyclomatic complexity 66 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2bc99ef5a56006f57363b925ddbc821a3cf1d7fe900492b88d08a36ccd74085"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.RewriteSidecarRefsAfterSort (cyclomatic 65): ExcelHandler.RewriteSidecarRefsAfterSort has cyclomatic complexity 65 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab26509f79866374bc26cfca659475ccd52ca8848c1a33435fd08a1c4436c43b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetCfByPath (cyclomatic 65): ExcelHandler.SetCfByPath has cyclomatic complexity 65 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5f4f48da0174ef4560224d2ecff830be5ac41b5f670e0c6ddc9abdb496e785d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.TrySetWorkbookSetting (cyclomatic 65): ExcelHandler.TrySetWorkbookSetting has cyclomatic complexity 65 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"e482b9128477915f5ab433613cdd4c54e8acdb43b36b1ba2a4ee56937192585a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddHyperlink (cyclomatic 65): WordHandler.AddHyperlink has cyclomatic complexity 65 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0211ea7323e88818010de1394de874470b0dfe38a2cb47b46a30a9876d2b6a9"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveEffectiveParagraphStyleProperties (cyclomatic 65): WordHandler.ResolveEffectiveParagraphStyleProperties has cyclomatic complexity 65 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a05f48e8efd00148596c217b351ca77108dca8a3efd1065039932868bcb1da2"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SortRangeRows (cyclomatic 64): ExcelHandler.SortRangeRows has cyclomatic complexity 64 (threshold 15). Of this number, 62 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3cc23b88194277dd351de50d68d2100b2699639b78fc181c2dbd7e905e27fd"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderShapeSvg (cyclomatic 64): PowerPointHandler.RenderShapeSvg 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":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf2a3abc7ac624f5f65961f57307b31813da6d9cdd8ef4964fbf2165eb594ad"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.Add (cyclomatic 64): WordHandler.Add has cyclomatic complexity 64 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b63efefb5715795b4c782eb301df3d7c48102e2e172fe8f495ea1bd0f7a7ae"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetAbstractNumPath (cyclomatic 64): WordHandler.SetAbstractNumPath 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":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":1253}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a86bfc448509948acbd7e0139015d5f3b445cb3166850f0f05a7154e05e21a5"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RenderMultiRowPivot (cyclomatic 63): PivotTableHelper.RenderMultiRowPivot has cyclomatic complexity 63 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc1eb1028da162507a3349a7b832394949d4711fd078679c0efadcaf6980e9a"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.EmitSheet (cyclomatic 63): ExcelBatchEmitter.EmitSheet has cyclomatic complexity 63 (threshold 15). Of this number, 59 points are the body\u0027s own statements and 4 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":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"280201d5f380ce62572298d8f374bc3758f8119c0448958b2843dbd14a8f19d6"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.Move (cyclomatic 63): PowerPointHandler.Move has cyclomatic complexity 63 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc5c2e73a82c85d126fc2a456c544d303f4cfc65a4d9312504f4c7230cee2c2"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RunToNode (cyclomatic 63): PowerPointHandler.RunToNode has cyclomatic complexity 63 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":2237}}}],"partialFingerprints":{"codehealthFindingId/v1":"1080d62728732c66ddf0f2ad6536f0a00271bb2ab351101425915cc7fef8228c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.PopulateAnimationNode (cyclomatic 63): PowerPointHandler.PopulateAnimationNode has cyclomatic complexity 63 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":2448}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb34a2da0ed73bfa8260a328002227b277081de44382e0889a565a2048f5166d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitInlineSectionBreak (cyclomatic 63): WordBatchEmitter.TryEmitInlineSectionBreak has cyclomatic complexity 63 (threshold 15). Of this number, 46 points are the body\u0027s own statements and 17 belong to 3 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"625c7b2060d8a58a197d0be0b3c535dffec276f1eaa4d07258951e5e27df93db"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderBar3DSvg (cyclomatic 61): ChartSvgRenderer.RenderBar3DSvg has cyclomatic complexity 61 (threshold 15). Of this number, 58 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4990}}}],"partialFingerprints":{"codehealthFindingId/v1":"2687ec971fd88901dc9c2d9e660dbb89911da1c9d21efbb0b5fb9812e7946094"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddCfExtended (cyclomatic 61): ExcelHandler.AddCfExtended has cyclomatic complexity 61 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfda3b18cf30c3debe2e57ff8edf2ef71f15e0d47f25a2a93a8169728dd341ab"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddBookmark (cyclomatic 61): WordHandler.AddBookmark has cyclomatic complexity 61 (threshold 15). Of this number, 57 points are the body\u0027s own statements and 4 belong to 3 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":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb39e709ef4b6deb60524da013a03ef0ceb0222e20298cedee9032331f1df782"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ConnectorToNode (cyclomatic 60): PowerPointHandler.ConnectorToNode 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":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3136}}}],"partialFingerprints":{"codehealthFindingId/v1":"aae244dbe162e6f702ae850ac962b9650b0273a85e93df2b818a8e3ab6375c97"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.BuildAbstractNumElement (cyclomatic 60): WordHandler.BuildAbstractNumElement 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2238}}}],"partialFingerprints":{"codehealthFindingId/v1":"b23101cd6965595dc71adbad9c6d3808e4a76f96e72d3da8ac7c64d45a64897c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.CopyFrom (cyclomatic 60): WordHandler.CopyFrom has cyclomatic complexity 60 (threshold 15). Of this number, 54 points are the body\u0027s own statements and 6 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":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":1650}}}],"partialFingerprints":{"codehealthFindingId/v1":"fef822650837835baa163c5db309378aa689e50768dbcb0ea3b3456d0e767b81"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.PopulateDocSettings (cyclomatic 60): WordHandler.PopulateDocSettings 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":"src/officecli/Handlers/Word/WordHandler.Navigation.DocSettings.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a2379376e6f9d8a0fbd0c0c183c6b723878792e80817e45b1ffb9d8961334c1"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.CopyFrom (cyclomatic 59): ExcelHandler.CopyFrom has cyclomatic complexity 59 (threshold 15). Of this number, 57 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"57cbe94407b8e4e98144d2ba3884b61709b8d0c7249c520a6848f2dbcd239313"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.MatchesRunSelector (cyclomatic 59): WordHandler.MatchesRunSelector has cyclomatic complexity 59 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Selector.cs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"427936bdf55f65d7b5379fd50674dc060919fb34ce5229c4ede761cc35f56339"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderScatterChartSvg (cyclomatic 58): ChartSvgRenderer.RenderScatterChartSvg has cyclomatic complexity 58 (threshold 15). Of this number, 57 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2479}}}],"partialFingerprints":{"codehealthFindingId/v1":"8575bd2a538a99694be815687afcb3d020325b7f63a95c8c63164fec363454c8"}},{"ruleId":"D1","level":"warning","message":{"text":"CompoundFile.ReadStream (cyclomatic 58): CompoundFile.ReadStream has cyclomatic complexity 58 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/CompoundFile.cs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba9335203ce4fdd1e94301e743067448da71b94e561ab5f2647993eb65bbd4f"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddValidation (cyclomatic 58): ExcelHandler.AddValidation has cyclomatic complexity 58 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a1d05e2d3d6cd88142e717e9ba7be476901f46b4dca9254c964d70ed80a50ff"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitNoteReference (cyclomatic 58): WordBatchEmitter.EmitNoteReference has cyclomatic complexity 58 (threshold 15). Of this number, 53 points are the body\u0027s own statements and 5 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":2085}}}],"partialFingerprints":{"codehealthFindingId/v1":"46449691fa2723af005a6989957b9183d5d170df38d7471b7b33188837ee6b7f"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddTable (cyclomatic 57): PowerPointHandler.AddTable has cyclomatic complexity 57 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"606c31366d257df6e7610f46f0a0178ff91e09196f1e906f245641a6be593994"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyShapeAnimation (cyclomatic 57): PowerPointHandler.ApplyShapeAnimation has cyclomatic complexity 57 (threshold 15). Of this number, 56 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"590b5152fd7da55650bce01069eadf229e485a9fd16394803ae6c3153425591d"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitSlide (cyclomatic 57): PptxBatchEmitter.EmitSlide has cyclomatic complexity 57 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f905699717931b85fc40afeaeca6f64827bed938a53af5576459b6c8711005"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddRow (cyclomatic 57): WordHandler.AddRow has cyclomatic complexity 57 (threshold 15). Of this number, 56 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":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd1333dabf71345381a7b00521954ea573e5d55dab91143edfd9e83059fc041e"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.ParseMatrix (cyclomatic 56): FormulaParser.ParseMatrix 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":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":2369}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dde9051264e245feeed7dcfe1f364a0bc7b36939b8ca4eb350a069fa2bdb3b4"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetSmartArtsOnSlide (cyclomatic 56): PowerPointHandler.GetSmartArtsOnSlide has cyclomatic complexity 56 (threshold 15). Of this number, 53 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3313}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac88159fcc330d6facbb634bb6dec391c97b45ac77a370e2d379e3377da6a77"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderPieChartSvg (cyclomatic 55): ChartSvgRenderer.RenderPieChartSvg has cyclomatic complexity 55 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1647}}}],"partialFingerprints":{"codehealthFindingId/v1":"db35dd23d52b091cec38f5c37cca6f4b608c0e40edf1e1cd913294584606017a"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderComboChartSvg (cyclomatic 55): ChartSvgRenderer.RenderComboChartSvg has cyclomatic complexity 55 (threshold 15). Of this number, 54 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2653}}}],"partialFingerprints":{"codehealthFindingId/v1":"78812ee23ec09924bcb1f0d5e865ad2f763019a6c635297d036776bb223799b8"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.RenderExcelChart (cyclomatic 55): ExcelHandler.RenderExcelChart has cyclomatic complexity 55 (threshold 15). Of this number, 52 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3149dc8bdfcb2d7ac472d7343050bf3d8ebd195be702996f8677fc9121cfc31"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitBody (cyclomatic 55): WordBatchEmitter.EmitBody has cyclomatic complexity 55 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.cs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"a146ceefb5763e3f67d0c5666ad420d3c030ee05ce4689b00cc60fb50ef23256"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetDocumentProperties (cyclomatic 55): WordHandler.SetDocumentProperties has cyclomatic complexity 55 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"b004b353685f257a00f4df76e2c934049821f988ad8d20c0f1474dd1be37fc82"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddFooter (cyclomatic 55): WordHandler.AddFooter has cyclomatic complexity 55 (threshold 15). Of this number, 54 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2864}}}],"partialFingerprints":{"codehealthFindingId/v1":"c349b7d5e635087beb8abb6c523615d9dfa5b8004b51b3ea9b7682d29b90c6b4"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderShapeHtml (cyclomatic 55): WordHandler.RenderShapeHtml has cyclomatic complexity 55 (threshold 15). Of this number, 52 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a814541d081ad4b01a84ed5d298d2d9c9235d0ae40c2a926158edb9bf73bfe2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddHeader (cyclomatic 54): WordHandler.AddHeader has cyclomatic complexity 54 (threshold 15). Of this number, 53 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2664}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4ec0fa7658a1524adbd229c0259269c2831c853396283954ac8dcc08f3364e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.CreateImageNode (cyclomatic 54): WordHandler.CreateImageNode has cyclomatic complexity 54 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.ImageHelpers.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d414a658c9ef09a5e5f5316abee5959a9670e96ba8db957f55bf8c499545158"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.Move (cyclomatic 54): WordHandler.Move has cyclomatic complexity 54 (threshold 15). Of this number, 49 points are the body\u0027s own statements and 5 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":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3b9f8d43d1da8a7cc9b67ce7d1ca83cac3ae130bc8f8f6cf9bebc4123e1e7c0"}},{"ruleId":"D1","level":"warning","message":{"text":"FlowchartLayout.Layout (cyclomatic 53): FlowchartLayout.Layout has cyclomatic complexity 53 (threshold 15). Of this number, 51 points are the body\u0027s own statements and 2 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":"src/officecli/Core/Diagram/FlowchartLayout.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"f80f2e9edaf817b26cce5df468231af73060d73b964144b845fd5d910bc58e3b"}},{"ruleId":"D1","level":"warning","message":{"text":"FlowchartLayout.BkPosition (cyclomatic 53): FlowchartLayout.BkPosition has cyclomatic complexity 53 (threshold 15). Of this number, 51 points are the body\u0027s own statements and 2 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":"src/officecli/Core/Diagram/FlowchartLayout.cs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"7255eecd9eef5072f4c1b358808b8f12375db74d19c9a1173112a5ff42bfd277"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderTextBodyFO (cyclomatic 53): PowerPointHandler.RenderTextBodyFO has cyclomatic complexity 53 (threshold 15). Of this number, 52 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":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1158}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c527f4d0cce2adbfc6dfa842009f3f44856084ceb68993772690417328d9f8"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddOle (cyclomatic 53): WordHandler.AddOle has cyclomatic complexity 53 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8c7bcb065ef1a52abb1dcc480c3f6e99d1686321175f882ba1248519c3530a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderImageHtml (cyclomatic 53): WordHandler.RenderImageHtml has cyclomatic complexity 53 (threshold 15). Of this number, 50 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"b58d7e55a36879a54b1a5cee84fc44b65b5e2bf496aba24723a1e3e1489af74f"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RejectAllChanges (cyclomatic 52): WordHandler.RejectAllChanges has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2208}}}],"partialFingerprints":{"codehealthFindingId/v1":"e600ba8f216dccabfb677d7cf14e6f6eef4d71c02aa13ca82e4707784500ab54"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetShapeProps (cyclomatic 52): WordHandler.SetShapeProps has cyclomatic complexity 52 (threshold 15). Of this number, 47 points are the body\u0027s own statements and 5 belong to 5 function literals inside it that branch. To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":3216}}}],"partialFingerprints":{"codehealthFindingId/v1":"54ec3296472778a4987067f8f2ba1a3e23fdb4e7ee8bd7b89f998b7fec03d26f"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.ApplySeriesReferences (cyclomatic 51): ChartHelper.ApplySeriesReferences has cyclomatic complexity 51 (threshold 15). Of this number, 48 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":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfbfa342706dc7b935458d9550e0400139ae1125c91e0b53181daa310238bb5f"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.BuildPivotTableDefinition (cyclomatic 51): PivotTableHelper.BuildPivotTableDefinition has cyclomatic complexity 51 (threshold 15). Of this number, 50 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":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d8147426b062fbf11407a06c0a8ff78445dba52080128bc4d142c6e494992fa"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateNumFmt (cyclomatic 50): ExcelStyleManager.GetOrCreateNumFmt 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":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a246b593a1c49b6fb5de5d3fd8c37254fce63e0d17cd7a769bfce02dd444610"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddChart (cyclomatic 50): PowerPointHandler.AddChart has cyclomatic complexity 50 (threshold 15). Of this number, 48 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f128e6598bdf8544cb29db107b3896a06bbd9dcfc0c970efb1808f2b97889d"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.ScanSlideExoticContent (cyclomatic 50): PptxBatchEmitter.ScanSlideExoticContent 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b55afe0216d510cb98477aacd0e06b8bdd251eb84f612dd3bf5fea8a3a2f3f2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ElementToNode (cyclomatic 49): WordHandler.ElementToNode has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6028}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c35fccc378de8da81ea98fd3f89a25cab2f22faff37e887c00d1b176bd7706"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddAutoFilter (cyclomatic 48): ExcelHandler.AddAutoFilter has cyclomatic complexity 48 (threshold 15). Of this number, 47 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d3264cc22a7c92dc32327977f6a89d6490df132397c84a2e4c62ab08597bf9"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ApplyNumberFormat (cyclomatic 48): ExcelHandler.ApplyNumberFormat has cyclomatic complexity 48 (threshold 15). Of this number, 46 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3218}}}],"partialFingerprints":{"codehealthFindingId/v1":"81156409caea47f537de8137370805908ad057dbbf3308865176604601ed35ef"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReadShapeAnimation (cyclomatic 48): PowerPointHandler.ReadShapeAnimation has cyclomatic complexity 48 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2229}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbb714317839427014a0a2b366aa543d23e0687a1f26742046a42d68966831ff"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitComments (cyclomatic 48): WordBatchEmitter.EmitComments has cyclomatic complexity 48 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f7cd9264c2b793b56ee97a8e8f9bc17cac4c07ff68f55f8f3f4b4fe2e09746"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElementTableRow (cyclomatic 48): WordHandler.SetElementTableRow has cyclomatic complexity 48 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":2455}}}],"partialFingerprints":{"codehealthFindingId/v1":"69de01d0a18bfffb8868f41311299fb5b3558ea521fdb5a28cfa404a3652f667"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddSparkline (cyclomatic 47): ExcelHandler.AddSparkline has cyclomatic complexity 47 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":945}}}],"partialFingerprints":{"codehealthFindingId/v1":"f38d07611ed039d33fec0ff52235706684df7cb1fb9b033a0ebe41be583d0203"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetValidationByPath (cyclomatic 47): ExcelHandler.SetValidationByPath has cyclomatic complexity 47 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bbf6a52e4ee3c3d8967c7989bfb21978a062ebaa8189df57e18a87c423510b5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.ShouldCollapseSingleRun (cyclomatic 47): WordBatchEmitter.ShouldCollapseSingleRun has cyclomatic complexity 47 (threshold 15). Of this number, 45 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1224}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9cffd8bbfbdf908ee8a20dcb94b5b76ffb0fdfddc1c9125f3201d6d6702fe6"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RawSet (cyclomatic 47): WordHandler.RawSet has cyclomatic complexity 47 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":1550}}}],"partialFingerprints":{"codehealthFindingId/v1":"007c3006cd11f4bd880448c5730ab199eec6f5a4dacfde341124ddd648d42d98"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddDataBar (cyclomatic 46): ExcelHandler.AddDataBar has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"a692abedf7263f73a508b5860312625312c2a2b065ae436a1e87577080ae921f"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ParseGlbBoundingBox (cyclomatic 46): PowerPointHandler.ParseGlbBoundingBox has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"09c5e088244ef201daaefb8bb6aed6444167014efdbfae3a223e6043c5afc069"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderTextBodySvg (cyclomatic 46): PowerPointHandler.RenderTextBodySvg has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9045418175a6f8b8efb265991d250e82d517cc1dd0f4d937c7cbac00d8c7f57"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.MatchesParagraphAttrs (cyclomatic 46): WordHandler.MatchesParagraphAttrs has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Selector.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"b570d232d9023bb9b6502597ea3e4344e785a1c34a61f866121c530858761289"}},{"ruleId":"D1","level":"warning","message":{"text":"FlowchartLayout.Route (cyclomatic 45): FlowchartLayout.Route has cyclomatic complexity 45 (threshold 15). Of this number, 40 points are the body\u0027s own statements and 5 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":"src/officecli/Core/Diagram/FlowchartLayout.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac73c58bd31a312518ce7e8309eb98395bc072649e7b9d89223dba53114f4e9"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ParseValueFields (cyclomatic 45): PivotTableHelper.ParseValueFields has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Parse.cs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"564a83963bfb80f538004e856cec216330b81e3286136ad794927aa1180bd780"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetIconHtml (cyclomatic 45): ExcelHandler.GetIconHtml has cyclomatic complexity 45 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1632}}}],"partialFingerprints":{"codehealthFindingId/v1":"40de3afe5ddfab150ff399b449c896a56571a62b8ef97702002efcdfccbfff9f"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddMedia (cyclomatic 45): PowerPointHandler.AddMedia has cyclomatic complexity 45 (threshold 15). Of this number, 44 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"6174d7e48b0df7e837495ccb4c507e3a989e31e26cf7958e6fc0724659b20af1"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddNamedRange (cyclomatic 44): ExcelHandler.AddNamedRange 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec7699e3ffcf6c420214bb0d451883f998a2817ab5487953ed68c2ffe85c8e76"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReadTransitionDirection (cyclomatic 44): PowerPointHandler.ReadTransitionDirection 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2742}}}],"partialFingerprints":{"codehealthFindingId/v1":"091844635942baf74b9a2e9a37dfe54f43b378ce0abc6a362f746374480e3b29"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AppendW14CssEffects (cyclomatic 44): WordHandler.AppendW14CssEffects 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1959}}}],"partialFingerprints":{"codehealthFindingId/v1":"0adc203fb1e321bab2b3c194f2481c3823b9f77518a4ad8893f34ee7861ca825"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.RunHelp (cyclomatic 43): CommandBuilder.RunHelp has cyclomatic complexity 43 (threshold 15). Of this number, 41 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":"src/officecli/CommandBuilder.Help.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c91e05d22abbd2d33b752d55572382107326c552b8465407e09c61a68c5931"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartExBuilder.BuildExtendedChartSpace (cyclomatic 43): ChartExBuilder.BuildExtendedChartSpace 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":"src/officecli/Core/Chart/ChartExBuilder.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"495716bac92414261999659adb26b6216d8d7fa97699a04d51780aaeccc50d31"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolvePptParagraphsForFindInternal (cyclomatic 43): PowerPointHandler.ResolvePptParagraphsForFindInternal 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"464ce7177ce462903c9c2036fbcc169d4c1e5973347ef3063e4de13de72f0b68"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ReadW14TextEffects (cyclomatic 43): WordHandler.ReadW14TextEffects 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":"src/officecli/Handlers/Word/WordHandler.Helpers.TextEffect.cs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3be84ad8610c365193fe3a3179dcb65a9cf30280d1801774c7afc6d314fdd3"}},{"ruleId":"D1","level":"warning","message":{"text":"TableStyleResolver.MergeRegions (cyclomatic 42): TableStyleResolver.MergeRegions has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TableStyles/TableStyleResolver.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"656a0e219eacd7eabe27a36693f8566a0ec76392a6e7d2fde622fa4f2b9c4392"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ApplyChartPositionSet (cyclomatic 42): ExcelHandler.ApplyChartPositionSet has cyclomatic complexity 42 (threshold 15). Of this number, 41 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc5f35198acb3d4edcf807b0441cd6c1478409750a5763ae1ad52294b634867"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetCellStyleCss (cyclomatic 42): ExcelHandler.GetCellStyleCss has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2184}}}],"partialFingerprints":{"codehealthFindingId/v1":"db5a3ca47d17b5492743725cb51bf0dbadc2819baf766a7d3c780260f0ada641"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetOleByPath (cyclomatic 42): ExcelHandler.SetOleByPath has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ba8517a284f82aa137444061da08005970dc791e0c80321ebf0dd9444d75d5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.BuildChartFrame (cyclomatic 42): WordHandler.BuildChartFrame has cyclomatic complexity 42 (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":"src/officecli/Handlers/Word/WordHandler.Helpers.Chart.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"c27a0d606cd87ef2dd1b7198459fae5fc66c98ba93666e5051cbbf76653eabf2"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildAxisNode (cyclomatic 41): ChartHelper.BuildAxisNode has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Axis.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c44f0436dde6babb185e1f62a7f4fdf37dc8268663f84b0b5ebaaf9247dcad"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.ExtractCxChartInfo (cyclomatic 41): ChartSvgRenderer.ExtractCxChartInfo has cyclomatic complexity 41 (threshold 15). Of this number, 40 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":"src/officecli/Core/Chart/ChartSvgRenderer.CxExtract.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"73db29f41ef96896d5b1b18d1329b63a53b3a0c91315e4bf13626a1a6c159459"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.BuildTreeAxisItems (cyclomatic 41): PivotTableHelper.BuildTreeAxisItems has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":1063}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ade995e22f0622eb7c590df12e71e46dd176b0d1f58adb58c6ca4933a18709d"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CustomGeometryToClipPath (cyclomatic 41): PowerPointHandler.CustomGeometryToClipPath has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e711316355c0b23d31e92245a480fc50516995ba9ae4712f96eeabf5985c53"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetMediaByPath (cyclomatic 41): PowerPointHandler.SetMediaByPath has cyclomatic complexity 41 (threshold 15). Of this number, 40 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c29b463cfed28e3a4b470f588cd27d14c4ebe36457403369f4cc3b6f61af8e"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetShapeAnimationByPath (cyclomatic 41): PowerPointHandler.SetShapeAnimationByPath has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":1950}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e8cc008fc2550b7c9874ef21a9b4a292c8f0328a329652b9326dfd5d0f5517"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitShape (cyclomatic 41): PptxBatchEmitter.EmitShape has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a474ae0816ec600cbcb34ea14b20e889d1f6fb125ad6181ef1dda7929dc501a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ReadRowProps (cyclomatic 41): WordHandler.ReadRowProps has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6196}}}],"partialFingerprints":{"codehealthFindingId/v1":"de73f805fa23fa786070e2e8b3e6c574fd5b7688bd55e51968bcdd5e310c7dc7"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.MergeRunProperties (cyclomatic 41): WordHandler.MergeRunProperties has cyclomatic complexity 41 (threshold 15). Of this number, 40 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":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"694e52b0f3297ab57ec1fcfe99efb525b0f7b81d5bf090c578c94a148f77d2e7"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalLinest (cyclomatic 40): FormulaEvaluator.EvalLinest has cyclomatic complexity 40 (threshold 15). Of this number, 39 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":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7126dd2f8fa7be4abd52cb8f7221ddcc9c90dd9dc61b860b63300441e8a117"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ParseSrcRect (cyclomatic 40): ExcelHandler.ParseSrcRect 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd92876a69d870f08c1b14924c6ad95ce717be1b46ca2ed3bcfb42218bc2d8ad"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ParseTransitionFromXml (cyclomatic 40): PowerPointHandler.ParseTransitionFromXml 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2450}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4524314ac26afc2967bdaca3530471164ff540e1a567da6f01b57f74bb437be"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReadSlideTransition (cyclomatic 40): PowerPointHandler.ReadSlideTransition 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2639}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ed00ad6a1c92a08291a75c4838730e531800a5c0f615e350577b603e8cccd3"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.BuildFieldAddProps (cyclomatic 40): WordBatchEmitter.BuildFieldAddProps 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":"src/officecli/Handlers/Word/WordBatchEmitter.Fields.cs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f9fdb98fe96efcdfa53f9b1bda74c1ea60a0bd11e1db863634294f6faad4e3"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderArea3DSvg (cyclomatic 39): ChartSvgRenderer.RenderArea3DSvg has cyclomatic complexity 39 (threshold 15). Of this number, 38 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5354}}}],"partialFingerprints":{"codehealthFindingId/v1":"80ec72b4a08af72870a4842bc76ab275c1da518af27160406c3c02015f1d380e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.FindAndReplace (cyclomatic 39): ExcelHandler.FindAndReplace 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"0248b1ead2795521e8adcf047f37151a8ab2a5b7087a722d7a76874997e70eec"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildRowInnerHtml (cyclomatic 39): ExcelHandler.BuildRowInnerHtml 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ae6a2fd82bcec5cbc89b8c13e1f761d0ce73ca1a37e7774d405aa31b95e9f1"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.QueryRowsByColumnPredicate (cyclomatic 39): ExcelHandler.QueryRowsByColumnPredicate has cyclomatic complexity 39 (threshold 15). Of this number, 38 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":"src/officecli/Handlers/Excel/ExcelHandler.Query.RowWhere.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"dea4beda8ffa52b533e866200d81e6171ddd6022b31a60e9fcf3de3bf4362e1c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetSparklineByPath (cyclomatic 39): ExcelHandler.SetSparklineByPath 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b19081745e79cb6688f2918953c8eae055794d4e0eb0333816d16268962a20a"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CheckTextOverflow (cyclomatic 39): PowerPointHandler.CheckTextOverflow 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":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":3896}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e8f0e29cdfbc5b473a44a0f86b06229250328ca3fff552a9647f5a5d47b098"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitParagraph (cyclomatic 39): PptxBatchEmitter.EmitParagraph has cyclomatic complexity 39 (threshold 15). Of this number, 34 points are the body\u0027s own statements and 5 belong to 3 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"7223d2e45bffee708afabe72599d5827b7d6f785bfa5aa524493228535e6ec1d"}},{"ruleId":"D1","level":"warning","message":{"text":"SchemaHelpLoader.ValidateProperties (cyclomatic 39): SchemaHelpLoader.ValidateProperties 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":"src/officecli/Help/SchemaHelpLoader.cs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d332cf6f9c46c43a617703022fcb0e7dd1e4b1579bc7e1786e37c498933841a"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateFont (cyclomatic 38): ExcelStyleManager.GetOrCreateFont 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":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa35df2866f7596be406150edd81ce1ae030113d9a02bc2c8e218aa2590ea01"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalXlookup (cyclomatic 38): FormulaEvaluator.EvalXlookup 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":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf16ab36bc1b37fb8d399b6d8fc29fa7238f8d9d7ae215f8e9197dd5dd717e4"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ProcessFindInPptParagraph (cyclomatic 38): PowerPointHandler.ProcessFindInPptParagraph 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2fc51995c73d20fb6f622898d5f77fbf1c7ddf73ae60dcd662c574176ee5753"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.Swap (cyclomatic 38): PowerPointHandler.Swap 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c59854351c7fe8fe2e17ef3be7b44399a00a6dbd18ea610798f8243e02f5fe7"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetParagraphOnShapeCore (cyclomatic 38): PowerPointHandler.SetParagraphOnShapeCore has cyclomatic complexity 38 (threshold 15). Of this number, 37 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"29584d06d7e98ab4cf05f9f2770593736558d5ab38308194b06d3adb86c2441a"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetSlideByPath (cyclomatic 38): PowerPointHandler.SetSlideByPath 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Slide.cs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"9edf216ccba9da6cf21a7fe5cd8a2a271b9354b21754efbefdc6883c937c78b3"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderChartHtml (cyclomatic 38): WordHandler.RenderChartHtml 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Charts.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"578b458b25a4dc388fd7ba292a2db405d5b6dd347e12c270b591aa9ace2876c8"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.BuildSectionHfBundles (cyclomatic 38): WordHandler.BuildSectionHfBundles 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":3395}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3743a69aa831a53ef24758104ca7f235cde5937fff212eb495631b5cbf3a3c6"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetHeaderFooter (cyclomatic 38): WordHandler.SetHeaderFooter has cyclomatic complexity 38 (threshold 15). Of this number, 36 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"6715ad819fa76fc2064aef0eb45fb7520fd024789bebacb066325552b11676e4"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ViewAsTextJson (cyclomatic 38): WordHandler.ViewAsTextJson has cyclomatic complexity 38 (threshold 15). Of this number, 37 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":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07db8e78bb91cc5c749099978ad7c5b43b8fcfc00a6b77e48db8f0491c13a44"}},{"ruleId":"D1","level":"warning","message":{"text":"AttributeFilter.MatchOne (cyclomatic 37): AttributeFilter.MatchOne has cyclomatic complexity 37 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"65655c651b1964b7964d8a689e1b9207e2940b342c0108e52d5d32c16602177f"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderBubbleChartSvg (cyclomatic 37): ChartSvgRenderer.RenderBubbleChartSvg 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2336}}}],"partialFingerprints":{"codehealthFindingId/v1":"e504ce557176c4745ed54d49a86381290d55023246d90f40de82534ab7ec00c9"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReadBackground (cyclomatic 37): PowerPointHandler.ReadBackground has cyclomatic complexity 37 (threshold 15). Of this number, 34 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea1740ed20f01f511bed86c8d5e3a7fbec2c24c67cb5a4884e95da0e20791d9"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderChart (cyclomatic 37): PowerPointHandler.RenderChart has cyclomatic complexity 37 (threshold 15). Of this number, 35 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Charts.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"430879a3b0ab0511b65db7901e401e8939106f0e69c7957ab99a8f7704863c5f"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderOlePreviewHtml (cyclomatic 37): WordHandler.RenderOlePreviewHtml has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"d54f58f5b03fcb517c3c66ad6d04fbf1713e62cf85e288efbcf02076260a9b86"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ViewAsAnnotated (cyclomatic 37): WordHandler.ViewAsAnnotated 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":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"e008a789715f6375e0a3ff5979932cb9a19cadbc3ff6a7e617dea86562a5d41e"}},{"ruleId":"D1","level":"warning","message":{"text":"SchemaHelpRenderer.RenderUsageBlock (cyclomatic 37): SchemaHelpRenderer.RenderUsageBlock has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpRenderer.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"4657c04292caae1da3a53b2ccb2355c15ca5bcbab866ad356db13f7fee1678b5"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.ExecuteSet (cyclomatic 37): ResidentServer.ExecuteSet has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2099}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f4a4bd7f76f7eae8c088cf6e2410db63ae0c4293b08d44f3aabad33fd7d5e15"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddChart (cyclomatic 36): ExcelHandler.AddChart 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.Chart.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"759ff9d27401a4f999b7f01cafc90e94082325b33d36ff8d8c650ee6be48b2a0"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ConvertOmmlNode (cyclomatic 36): PowerPointHandler.ConvertOmmlNode has cyclomatic complexity 36 (threshold 15). Of this number, 34 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1919}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29fe6299f2ceb491047fd539b771a4e6d745310e362c4ee57313b7ac54a1b6e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ReadDocDefaults (cyclomatic 36): WordHandler.ReadDocDefaults has cyclomatic complexity 36 (threshold 15). Of this number, 35 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"62b405463b6ca923350897b0eee79436f732aaa78405732c90334ef411282bb2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveAnchorPosition (cyclomatic 36): WordHandler.ResolveAnchorPosition 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd186b9c38517a101f6d35b46d3c18e505ba0acbc47dedc3b9d775844051c5c7"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RefreshPivotCacheFromSource (cyclomatic 35): PivotTableHelper.RefreshPivotCacheFromSource 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":"src/officecli/Core/PivotTableHelper.Readback.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"e004a74377cd43bb5e6c084c9bffdb619c2b8c22294deb2958c20a88f3c64deb"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetPictureNode (cyclomatic 35): ExcelHandler.GetPictureNode has cyclomatic complexity 35 (threshold 15). Of this number, 33 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"91b6a144c7bf67579b8cd832c25dcdd26eb6a4f864d63755a4662684ec3fa03a"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyTableBorderFanOut (cyclomatic 35): PowerPointHandler.ApplyTableBorderFanOut has cyclomatic complexity 35 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a010684e0f0acf35854dcf84f2100f6dc8dd0746240e35454f4fbe282e5a63"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.FilterEmittableProps (cyclomatic 35): PptxBatchEmitter.FilterEmittableProps 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Filters.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7daad7ffd2ed9471fe81e7152a461723561b12ab65bfa9f69f6930107c8d0e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ViewAsText (cyclomatic 35): WordHandler.ViewAsText has cyclomatic complexity 35 (threshold 15). Of this number, 34 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":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c60afb6df7dc0a0e632853a7b065ac323261ac9d954ed4eabbbc2c728ef3fdc"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.AppendTrendline (cyclomatic 34): ChartSvgRenderer.AppendTrendline has cyclomatic complexity 34 (threshold 15). Of this number, 33 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1099}}}],"partialFingerprints":{"codehealthFindingId/v1":"14b9194b5201c31b0d4c5a3823c81bd89b7657d359f1cc92c0ff00fa87fa6673"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.EmitPivotTables (cyclomatic 34): ExcelBatchEmitter.EmitPivotTables 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":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec890a11a65ef2952b1a28fe4dc965e129c05c355f1d154871948eae723774e7"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetOleByPath (cyclomatic 34): PowerPointHandler.SetOleByPath has cyclomatic complexity 34 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"54637f40d88e0cbce1b1486f2007d9c5ab6ec0ff80a1015a6e4f0a002606d961"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetGroupByPath (cyclomatic 34): PowerPointHandler.SetGroupByPath 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ce43b2b794043f54dfeb110c67192df13e7d28493b8b07749f789716e5dd9f"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.NormalizeSlideRawSlice (cyclomatic 34): PptxBatchEmitter.NormalizeSlideRawSlice has cyclomatic complexity 34 (threshold 15). Of this number, 27 points are the body\u0027s own statements and 7 belong to 5 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":1414}}}],"partialFingerprints":{"codehealthFindingId/v1":"f710cb3bb678ed64bebcd1b158e994c9736f8ee256110e00feb08939a19fcf64"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitTable (cyclomatic 34): PptxBatchEmitter.EmitTable 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Table.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cabfa6804fa38677c9d600bdec9ca3b1e39a490580100a12bc9c5e024c3117d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitPlainOrHyperlinkRun (cyclomatic 34): WordBatchEmitter.EmitPlainOrHyperlinkRun 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4334}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f23f70b64cb893307e9309c4aa56f212b4a2f0633999c1d5023ed5f095ce19"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitHeaderFooterPart (cyclomatic 34): WordBatchEmitter.EmitHeaderFooterPart has cyclomatic complexity 34 (threshold 15). Of this number, 30 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b32c4909618aca94ffbb018322870ed96c64fcafb79441070d2407baf17d85"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetOleEmitData (cyclomatic 34): WordHandler.GetOleEmitData has cyclomatic complexity 34 (threshold 15). Of this number, 33 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":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"9531c3fe36cf4aa2e05be8f10f40d05e6ecd50a5635befbc02e8db096f38de48"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildMarkCommand (cyclomatic 33): CommandBuilder.BuildMarkCommand has cyclomatic complexity 33 (threshold 15). Most of this is not in the body itself: 1 of the 33 points is its own statement and the rest belongs to one function literal inside it that branches (line 38). 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":"src/officecli/CommandBuilder.Mark.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"89853cb304fa6485bda669c5b5a4ed49025e85003f4f0e80ccb3897f2c59fbff"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.DetectChartType (cyclomatic 33): ChartHelper.DetectChartType has cyclomatic complexity 33 (threshold 15). Of this number, 31 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":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1694}}}],"partialFingerprints":{"codehealthFindingId/v1":"5533ab4a4a3c47fbda6b1c1ed6efcd06b9b5065c1b45d6d51c46ab8a69cf8131"}},{"ruleId":"D1","level":"warning","message":{"text":"ModernFunctionQualifier.AutoQuoteSheetRefs (cyclomatic 33): ModernFunctionQualifier.AutoQuoteSheetRefs 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":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d968ec13197d1e80358768a2641bc25165711015e0cc2df4f74764813000190"}},{"ruleId":"D1","level":"warning","message":{"text":"RawXmlHelper.ExecuteOnXmlString (cyclomatic 33): RawXmlHelper.ExecuteOnXmlString 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":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f6e44597567e1822cd8e96cab9c0efb81e2ce71545a0dd0a9f52f36fa35368c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.EmitCharts (cyclomatic 33): ExcelBatchEmitter.EmitCharts has cyclomatic complexity 33 (threshold 15). Of this number, 27 points are the body\u0027s own statements and 6 belong to 3 function literals inside it that branch. To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2301dae2075cd38fb87060d344d6af881d7dcade9cdeb2c3668eba3740929c0"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddPicture (cyclomatic 33): ExcelHandler.AddPicture has cyclomatic complexity 33 (threshold 15). Of this number, 30 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cab71acb279ccfcef43eacacafafcfd5ad70766db738ba1cf6140a58706368c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ParseDataRangeForChart (cyclomatic 33): ExcelHandler.ParseDataRangeForChart 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26bdd85a2da0a9f3e32b4adf564d1b1a9bacf32d1dea80e625b917a97b57dac"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildConditionalFormatMap (cyclomatic 33): ExcelHandler.BuildConditionalFormatMap 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"99534891dd8afaadb7665603eca7deeb0fdfb4769c39b7343b7fb1adabe917e2"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddAnimation (cyclomatic 33): PowerPointHandler.AddAnimation has cyclomatic complexity 33 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"de4eadb50a04a1414849acbad01192e77a1c768dcc5c9f69bbf220b3ecd29179"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.BuildGradientFill (cyclomatic 33): PowerPointHandler.BuildGradientFill 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ca64efece5f0b848f78de71eb1676e598019a3cc0c836db3de06c76c8220a1c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetShapeFillCss (cyclomatic 33): PowerPointHandler.GetShapeFillCss 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e9fa0e4fd57b7ced20de0250f84337e49781ef3f857785876f953548b78786"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitGenericAlternateContentForSlide (cyclomatic 33): PptxBatchEmitter.EmitGenericAlternateContentForSlide 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Media.cs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac3532b477e48ab20ca57be144b1dd35114568b460fdfb7a8abdfbbc160c155"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddNum (cyclomatic 33): WordHandler.AddNum has cyclomatic complexity 33 (threshold 15). Of this number, 31 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2042}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f66a93c0643b79c1be6ab7487ffba64a75f51983995246cde470bee66597878"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetGroupProps (cyclomatic 33): WordHandler.SetGroupProps has cyclomatic complexity 33 (threshold 15). Of this number, 29 points are the body\u0027s own statements and 4 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":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":3363}}}],"partialFingerprints":{"codehealthFindingId/v1":"463d444b252f4466e093d7d64b6384d7464e7d0c25b7e5385f10741de8e6d02b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveEffectiveRunPropertiesCore (cyclomatic 33): WordHandler.ResolveEffectiveRunPropertiesCore has cyclomatic complexity 33 (threshold 15). Of this number, 32 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":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96de6f746e0c0014fe56897308b8b17b46ad92e54ef8c104853f4542a9e5d22"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.ProcessRequest (cyclomatic 33): ResidentServer.ProcessRequest 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":"src/officecli/ResidentServer.cs"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c81f940c178a07d8eca48008d9bc68486cc0443630e06d7cde37960d362f879"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildPluginsLintCommand (cyclomatic 32): CommandBuilder.BuildPluginsLintCommand has cyclomatic complexity 32 (threshold 15). Most of this is not in the body itself: 1 of the 32 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":"src/officecli/CommandBuilder.Plugins.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"837b92432a5996c4e462564b36a6913996eeee9b9fa30514bfa994b080a57e16"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ComputePivotGeometry (cyclomatic 32): PivotTableHelper.ComputePivotGeometry has cyclomatic complexity 32 (threshold 15). Of this number, 29 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1681}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4d6f1cf09f043d08f23d205698159416c004fed40159d94d87f22d626bb8ca"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.EmitConditionalFormats (cyclomatic 32): ExcelBatchEmitter.EmitConditionalFormats has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae2cf3ec939b04cc178fd5ecea34f8cefcff6693e799c995fd994f9bc9ba682"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetRange (cyclomatic 32): ExcelHandler.SetRange has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d2b323ba7d011f074369adf44c6fd2485e9d666962fe5a8aa3c516dada9ae5"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RawSet (cyclomatic 32): PowerPointHandler.RawSet has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1bc50f3b30f6cf8ad6635100da89e256ea431975b606c3da8d7c5bd98c941e0"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.EmitEffectiveRunProperties (cyclomatic 32): WordHandler.EmitEffectiveRunProperties 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":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"c29b0ee8850424d56825d65035952f25401e115bb0f141196d698d5be8c7e97b"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.RebuildComboChart (cyclomatic 31): ChartHelper.RebuildComboChart has cyclomatic complexity 31 (threshold 15). Of this number, 30 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":"src/officecli/Core/Chart/ChartHelper.Advanced.cs"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"d91ac56e14d01633baf35f0bba28dfae9050b7fbc8c01b4a89b30f0a23649c06"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderRadarChartSvg (cyclomatic 31): ChartSvgRenderer.RenderRadarChartSvg 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2234}}}],"partialFingerprints":{"codehealthFindingId/v1":"1817dca3610ca32f52a99c54d12643f6aeb08b1bc27e18ce6e831f22773748e5"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.HandlePostSwitchAsync (cyclomatic 31): WatchServer.HandlePostSwitchAsync 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":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2583}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2143a28ba9c4dd25959b1065dc078c9644ec17ec1ccac06880e2c839743e7de"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.ClassifyCell (cyclomatic 31): ExcelBatchEmitter.ClassifyCell 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":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1751e03221cc6684322a3e0d827ef21684636ed119602e6ac58d6dd7f270be"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetFormattedCellValue (cyclomatic 31): ExcelHandler.GetFormattedCellValue 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2714}}}],"partialFingerprints":{"codehealthFindingId/v1":"f35aa379ede3a42177332c8408af66da587c0b36a7599a532ee5d18bed0a5f32"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.Import (cyclomatic 31): ExcelHandler.Import 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":"src/officecli/Handlers/Excel/ExcelHandler.Import.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"41572ccd4f7a47b460ca7a9afd745bc5016dcaaf0cc1e6fd4c857f30945ab35d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddSlicer (cyclomatic 31): ExcelHandler.AddSlicer has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Slicer.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"5382ff3a4da661c368d1703bdceec59ad9fc244d38cb3edf7f863a4bcc450b15"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.MatchesGenericAttributes (cyclomatic 31): PowerPointHandler.MatchesGenericAttributes 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f0b8650eb9e832f861b0a7bdbdb5c694cb2ce9836043555cd76fa2262615b7"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.BuildAnimValueFromProps (cyclomatic 31): PowerPointHandler.BuildAnimValueFromProps has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":2223}}}],"partialFingerprints":{"codehealthFindingId/v1":"b37520f4924b650a3c1d08d9a391fed1497c01d76739c721b59a7f38a854e252"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.EnsureAllParaIds (cyclomatic 31): WordHandler.EnsureAllParaIds 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":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"575545edd90799a5348dde7b54050a71e3a41c6ee744c1584534ac3adfb31e91"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.CollectInlinedPartsEmitData (cyclomatic 31): WordHandler.CollectInlinedPartsEmitData has cyclomatic complexity 31 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"446343ced2ae2266f0d3e010c2f79bc4a9e224289fce532aa821501675e8a888"}},{"ruleId":"D1","level":"warning","message":{"text":"applyMarks (cyclomatic 31): applyMarks has cyclomatic complexity 31 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"366b85d14c81ed410ed8a30f289344956b67185dd2db8147ed23faba69c21bfa"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderMultiRingDoughnut (cyclomatic 30): ChartSvgRenderer.RenderMultiRingDoughnut has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1797}}}],"partialFingerprints":{"codehealthFindingId/v1":"6847755015ecf1ef25d9bc9d1ec971f3ae0e670cf3658a58261084638b9d545c"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.ExtractFillColor (cyclomatic 30): ChartSvgRenderer.ExtractFillColor has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4299}}}],"partialFingerprints":{"codehealthFindingId/v1":"22008d2fd8d541a29fefd64ca5b1d3f7b7dd35d2b16825a8c3b732c6245f98d0"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderLegendHtml (cyclomatic 30): ChartSvgRenderer.RenderLegendHtml has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4795}}}],"partialFingerprints":{"codehealthFindingId/v1":"117a2f2106f2f737e0c54c924111a9a3bc1e4da523932b863ed87a5bfe1266db"}},{"ruleId":"D1","level":"warning","message":{"text":"DrawingColorBuilder.ParseColorTransformSuffix (cyclomatic 30): DrawingColorBuilder.ParseColorTransformSuffix has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/DrawingColorBuilder.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"11798a0145b6c15e1d64360ef34f3ff0b8662f0204d2f0bf8b448186a186931f"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.Tokenize (cyclomatic 30): FormulaParser.Tokenize has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcef10b1100383813649cd3a3549e6643d0ab58a8146e70ca0b660dadf7e766f"}},{"ruleId":"D1","level":"warning","message":{"text":"UpdateChecker.RunRefresh (cyclomatic 30): UpdateChecker.RunRefresh has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bbb83f7e9556a643ca89b190ad9bd67d97217e6c58afc21b8a6b03510d19762"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.HandlePostSendAsync (cyclomatic 30): WatchServer.HandlePostSendAsync has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"46eb31cfeb29f870748b73213c530bbbdd7414dfbaf5c0c8f85d1806a8543b52"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.RefreshStaleFormulaCaches (cyclomatic 30): ExcelHandler.RefreshStaleFormulaCaches has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.FormulaCache.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c9b445cbe6ed7043dca3f660c028098b99674cfb201012b63a3add3cfed9262"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveEffectiveDefRpCore (cyclomatic 30): PowerPointHandler.ResolveEffectiveDefRpCore has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.StyleList.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4270dbad5f5b443973858128f940f7edd02258307c7fe11e222c36118bbafd"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitPresentationProps (cyclomatic 30): PptxBatchEmitter.EmitPresentationProps has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"48bb6c37bcd9cc82fe72aede0f9fd90a45a4cb3bfee268c55a2d826040f2259c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitOneNoteSpecialNotesFixup (cyclomatic 30): WordBatchEmitter.EmitOneNoteSpecialNotesFixup has cyclomatic complexity 30 (threshold 15). Of this number, 27 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1744308c5880b458619edf900e8ab264f2513d39e4ed00c9cece087f95b3ded"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AcceptAllChanges (cyclomatic 30): WordHandler.AcceptAllChanges has cyclomatic complexity 30 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2044}}}],"partialFingerprints":{"codehealthFindingId/v1":"9317584bd5fffda102fc4cb72f2aea6ff23f2253aac21edb276aa764ae622839"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.ConvertSeriesToType (cyclomatic 29): ChartHelper.ConvertSeriesToType has cyclomatic complexity 29 (threshold 15). Of this number, 28 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":"src/officecli/Core/Chart/ChartHelper.Advanced.cs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"375de2f56c5584ac127f99f83364acf623501710d0070e6c9966efeaa64ec306"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.HandleWatchMessage (cyclomatic 29): WatchServer.HandleWatchMessage has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"3595eb2f9b918c60bf6da10437ab3ad47fcfab1eb2f0763db35531a56b3aded9"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.PopulateAutoFilterCriteria (cyclomatic 29): ExcelHandler.PopulateAutoFilterCriteria has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":971}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c6a5e0dd2c94e452595452f90bfc5c50fb35f469db8072f1f85970066bd5194"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildAlignmentCss (cyclomatic 29): ExcelHandler.BuildAlignmentCss has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2557}}}],"partialFingerprints":{"codehealthFindingId/v1":"9527709a8041806e8b438720d12d5dcefcbc209a0c901a07a29281cb224575b7"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.Raw (cyclomatic 29): ExcelHandler.Raw has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/ExcelHandler.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd1d008d6f6d45279d3680e6c3d2c07591f40a25a625f1b59c50f583cab53ad"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveShapeId (cyclomatic 29): PowerPointHandler.ResolveShapeId has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0da443f419c84c74a04ab6e50374b50d26069eea07c879b9149a131e42c8bcf"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.BuildClickGroup (cyclomatic 29): PowerPointHandler.BuildClickGroup has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed8a35cffb910c2ce145872090fb115c36828866f755970ae5f66277eadb560"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyPptRunFormatting (cyclomatic 29): PowerPointHandler.ApplyPptRunFormatting has cyclomatic complexity 29 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.RunFormat.cs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4296cf33f7c9744a7c9a44b0076b1fdcf6763f461288e88dcc3d142ccb8ccf2"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GradientToCss (cyclomatic 29): PowerPointHandler.GradientToCss has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"511641eeaa4ea703fa6e7add991972b24db92e316102acab0f0c7b6b9d98f619"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.TableBorderToCss (cyclomatic 29): PowerPointHandler.TableBorderToCss has cyclomatic complexity 29 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Tables.cs"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba36e198f925248b291ca443e1edbb7835b7633b5677cad5b97121017185108d"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitGroup (cyclomatic 29): PptxBatchEmitter.EmitGroup has cyclomatic complexity 29 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4c476ef79669f2406e4e7b7e809690092d091422570cbe12081cd97f8940c16"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.IsRichBlockSdt (cyclomatic 29): WordBatchEmitter.IsRichBlockSdt 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3057}}}],"partialFingerprints":{"codehealthFindingId/v1":"90067ef6de0c3b4d24cb83d4e6b878899e127cacf002cab9e22b8199dece9193"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveIndentationFromStyle (cyclomatic 29): WordHandler.ResolveIndentationFromStyle has cyclomatic complexity 29 (threshold 15). Of this number, 28 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"5df26441e53873834cee8ef347eb097ba29b9d60d2daa02488ab909a30bb60ae"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetCjkFontFallback (cyclomatic 29): WordHandler.GetCjkFontFallback 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":3325}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ec7e7e4d555d8639ac8159053fb23fc1a3c110b6144d6667f0e888bafc633a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.CollectFormFieldEntries (cyclomatic 29): WordHandler.CollectFormFieldEntries has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d23d899348543f329c0aefb7db1d1bf56d0f9122fbbd59a30dee34a8685f7ff"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalDatabase (cyclomatic 28): FormulaEvaluator.EvalDatabase has cyclomatic complexity 28 (threshold 15). Of this number, 26 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":2004}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a19761c53ae49ae70f89adee12c982f55ecf0b656c16b4daab7905a8b51d074"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageSource.TryGetDimensions (cyclomatic 28): ImageSource.TryGetDimensions has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ImageSource.cs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"25368eba806a4343169964827e710179987780ae6add53db8932e033a83c7ea7"}},{"ruleId":"D1","level":"warning","message":{"text":"OleHelper.AddEmbeddedPartFromBytes (cyclomatic 28): OleHelper.AddEmbeddedPartFromBytes has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/OleHelper.cs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9df08feeca597f024e3d644d6c51cf7c646800c8b6565034208d9324023b0b3"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ResolveDefinedName (cyclomatic 28): PivotTableHelper.ResolveDefinedName has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":1261}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea2cb59fab89dccb24ed3aed8f0426bce0ecc0829334a32bd07526b8689a97e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddPart (cyclomatic 28): ExcelHandler.AddPart has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf52e34ebad8e986a401846b86e373fc68b4d9a6f963e28c290458bfd192d544"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetMediaOnSlide (cyclomatic 28): PowerPointHandler.GetMediaOnSlide has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3576}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee7856dc3387fb4401ad6e27f12e5d3cc5aafe9fcb08ab68ed7c1cca84baf12"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveIdPath (cyclomatic 28): PowerPointHandler.ResolveIdPath has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a0c435e7862d6564912065a55a2c5fed477ce1e76153037f6095cf75d528de1"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.FindUnsupportedDescendant (cyclomatic 28): PowerPointHandler.FindUnsupportedDescendant has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"575287ba1eae24cdc21b1abaf15ab6e55a11c7a4b9f9200e489d8cbc2072ec60"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveShapeFillCss (cyclomatic 28): WordHandler.ResolveShapeFillCss has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"df832ce8c4358302f87ab29aa7e1baf97ad53b380e8f4b4fc2aea6f9eb2854db"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderCellListItem (cyclomatic 28): WordHandler.RenderCellListItem 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd3ae997d2b3e042a3fd8769696db368b1189ebb3d13197a5e9cd07f4e041a7"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.MoveWithTrackChange (cyclomatic 28): WordHandler.MoveWithTrackChange has cyclomatic complexity 28 (threshold 15). Of this number, 26 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":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"73fb6ccb698a9cc2e089cffd19c5ee4678bb4734fafa5831acfdee39e9f593c0"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 28): (anonymous) 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":"src/officecli/Resources/watch-sse-core.js"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbaccc1ece2455c2d98836c239660045ffca35d1ee3b7db23dcaab31abd5543e"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchItemConverter.Read (cyclomatic 27): BatchItemConverter.Read has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BatchTypes.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba580907c26944cee7326b6ab6b6daea5d7943546f2c826a89572404ac9ddfd2"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.AddReferenceLine (cyclomatic 27): ChartHelper.AddReferenceLine has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Advanced.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7bbf19e9c1665a4c18ead736ae78a9471bab779d967ea5325439b0faa9945f"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.ApplySecondaryAxis (cyclomatic 27): ChartHelper.ApplySecondaryAxis has cyclomatic complexity 27 (threshold 15). Of this number, 24 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":4189}}}],"partialFingerprints":{"codehealthFindingId/v1":"befd7859061d12b9ddfbf4c8d991391df2a12cb53adb1e7b452d4e45e08b8655"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.ParseFunction (cyclomatic 27): FormulaEvaluator.ParseFunction has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"60489754fab9753f47bb1d6ecee5b1655c1cfa4f19badeb3ba43aaa4dbafcefa"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalXmatch (cyclomatic 27): FormulaEvaluator.EvalXmatch has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b2284ccc6daf5977594eeaa5f4e7856ef8700ae24c37925a4ca49858ebaff35"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.BuildAxisItems (cyclomatic 27): PivotTableHelper.BuildAxisItems has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"90844e4e7dcce8b198cf6d36e946362d7ce0f7c116f7d4dfbe3a8dd623f2030c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.EmitNamedRanges (cyclomatic 27): ExcelBatchEmitter.EmitNamedRanges has cyclomatic complexity 27 (threshold 15). Of this number, 24 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":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"cba2565b08854a83112bd3ecf1abed3d5876a32ff2a61935917f315e256cd242"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetDumpRowNodes (cyclomatic 27): ExcelHandler.GetDumpRowNodes has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e54e839b36a5056add68ea3a7a1a43b0f2dc09120e257b2f04705ca9b87800"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetDumpColumnNodes (cyclomatic 27): ExcelHandler.GetDumpColumnNodes has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad05d4bed7c4da5dacc7ae4f286b7309d5486b0a062fd334fb249405ba016556"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SparklineGroupToNode (cyclomatic 27): ExcelHandler.SparklineGroupToNode has cyclomatic complexity 27 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"9745a26dabafcd3d46458532f7bf2b5b27a9b48459190d190f9cf902f3c9a5c0"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CountLastSiblings (cyclomatic 27): PowerPointHandler.CountLastSiblings has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2c8b459b2c7c9fb724b775c8c543c2306086dd3b2c1b1c7f50ef4bdc766a290"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetZoomByPath (cyclomatic 27): PowerPointHandler.SetZoomByPath has cyclomatic complexity 27 (threshold 15). Of this number, 26 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"d38f571f9f38bdc8e6f35226fb3d85e2a6ae9f23b0d8bd192515641268cb7a7d"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetMasterOrLayoutBackgroundByPath (cyclomatic 27): PowerPointHandler.SetMasterOrLayoutBackgroundByPath has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Slide.cs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c5581cc5541b9bcc94e85c01c0b599300003d1068d3969f9854b2445ad0dee5"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitConnector (cyclomatic 27): PptxBatchEmitter.EmitConnector has cyclomatic complexity 27 (threshold 15). Of this number, 25 points are the body\u0027s own statements and 2 belong to 2 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc51016de350c2e5773d5e8e7069f2c0913368cc270f85a9c9f56a41e054eb8e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitSection (cyclomatic 27): WordBatchEmitter.EmitSection has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3178}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9fb7e9bd73ba448834923ac9d556937f3176d45e4089177c5863415ce7ba527"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitStyles (cyclomatic 27): WordBatchEmitter.EmitStyles has cyclomatic complexity 27 (threshold 15). Of this number, 26 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3434}}}],"partialFingerprints":{"codehealthFindingId/v1":"404f830030889abb2b526e9c94dfde5d5be064ad622af5b7ce3ff9d048213d2a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.MaterializeInlinedParts (cyclomatic 27): WordHandler.MaterializeInlinedParts has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"c481ccb05bac29f624ef97fe5228427848d770021a0ae65841a67b1efc3598fa"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveParagraphsForFind (cyclomatic 27): WordHandler.ResolveParagraphsForFind has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6609840440a80f0202c16aa587dcdd8746cd7385c11dccacfb858cb3ba618e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AcceptRevision (cyclomatic 27): WordHandler.AcceptRevision has cyclomatic complexity 27 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c979480e7a8529446614160ff994989e8930015b02934f0dff5a0c13b6f9caa"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RejectRevision (cyclomatic 27): WordHandler.RejectRevision has cyclomatic complexity 27 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"875c24caabe0066cec48f3fa62cb959fc6aac4aa2f1e4a2355c6431ca6c11404"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.TrySetFootnoteEndnoteNumProps (cyclomatic 27): WordHandler.TrySetFootnoteEndnoteNumProps has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.SectionLayout.cs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3b97badc8557d98d6db4c3d12f3ea74f69ea750923c24a99f35e3ed623d861"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.ExecuteBatch (cyclomatic 27): ResidentServer.ExecuteBatch has cyclomatic complexity 27 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a11b9b3f1f03684896a99f8d5e4821f2edcd8a46a921098809fe11e6dfa4a0c"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildQueryCommand (cyclomatic 26): CommandBuilder.BuildQueryCommand has cyclomatic complexity 26 (threshold 15). Most of this is not in the body itself: 1 of the 26 points is its own statement and the rest belongs to 3 function literals inside it that branch (lines 185, 195, 221). 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":"src/officecli/CommandBuilder.GetQuery.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"213a9337f6c5b0fc8abf8175c1301a94d1187d42a13a03b11799a3a56c37b6e5"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.ParseSeriesDataExtended (cyclomatic 26): ChartHelper.ParseSeriesDataExtended has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b9d21a6e889e5ccb73a06306b1481062177027a6e2a375b4a915d3ebbb9318b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateBorder (cyclomatic 26): ExcelStyleManager.GetOrCreateBorder 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":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1457}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf61a53c4ec2e697280532877cd20dc2053cbb676a17fcbb453f56c0c336b57"}},{"ruleId":"D1","level":"warning","message":{"text":"FontMetricsReader.ReadFamilyNames (cyclomatic 26): FontMetricsReader.ReadFamilyNames has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb26f1c1012b12dc5bc28110619e7dfe4e14b905894d59fc179e00116611a254"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ApplyShowDataAs1x1 (cyclomatic 26): PivotTableHelper.ApplyShowDataAs1x1 has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Parse.cs"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf27c5106fd24ca0289307de4b172c1477bc9ce36bb0765280f470e818bcb1cd"}},{"ruleId":"D1","level":"warning","message":{"text":"WorksheetBloatFilter.FilterCore (cyclomatic 26): WorksheetBloatFilter.FilterCore has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WorksheetBloatFilter.cs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea48698f6cb79e31475826d81dee48d374adce2e044a0c75a62d7bafc1688fb"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetSpillWidthPt (cyclomatic 26): ExcelHandler.GetSpillWidthPt has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3c9b3830be3c7178687eb12958acd07fb1fd64a8d87b06dc257db30a8ccbd75"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.NormalizeDateFormatCase (cyclomatic 26): ExcelHandler.NormalizeDateFormatCase has cyclomatic complexity 26 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3865}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5c5ca08db796eaf1c9e77a7754d3b0877e85923735848d8150319328e96105"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetColumn (cyclomatic 26): ExcelHandler.SetColumn has cyclomatic complexity 26 (threshold 15). Of this number, 25 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.RowsCols.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"855ecf0395a69db0019c90bbb2947ddc9a5cb5491540a08d511d1110c92ed032"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddEmptyGroup (cyclomatic 26): PowerPointHandler.AddEmptyGroup 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee3b3d151e4214394ea6e4cdcb4c9258910c721f4401ce5f79eea686c5ce8ed"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddLineBreak (cyclomatic 26): PowerPointHandler.AddLineBreak has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dec34ba27899b4ea9e013dc251614e825f0d8a58fd0c1528d01b0e8cf2dc8b3"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveAnchorPosition (cyclomatic 26): PowerPointHandler.ResolveAnchorPosition has cyclomatic complexity 26 (threshold 15). Of this number, 25 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"557bc911ed5b14cf600e0165abc09ff2c4b14905a64f5b3ba7c4b006765e05c0"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveSlideLayout (cyclomatic 26): PowerPointHandler.ResolveSlideLayout has cyclomatic complexity 26 (threshold 15). Of this number, 22 points are the body\u0027s own statements and 4 belong to 4 function literals inside it that branch. To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9f0f179785ae73255f17d70c413be02aec835c84f507bb3dcca12c0b4daead"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetModel3DByPath (cyclomatic 26): PowerPointHandler.SetModel3DByPath has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"e701e21273b85c01de6f57a18e93b68880ba3b772f240710d8c195b75bcc200d"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.EmitEffectiveFromResolved (cyclomatic 26): PowerPointHandler.EmitEffectiveFromResolved has cyclomatic complexity 26 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.StyleList.cs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"459e5f084e128c359358a0993777fc157a52bc08a94a3422e97d5824512c8667"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.IsRichInlineSdt (cyclomatic 26): WordBatchEmitter.IsRichInlineSdt has cyclomatic complexity 26 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4698}}}],"partialFingerprints":{"codehealthFindingId/v1":"935a563d6f886585ac120f0b702518c950d4e52957736f49e17e12e4951a563c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ComputeMathElementPath (cyclomatic 26): WordHandler.ComputeMathElementPath has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1677}}}],"partialFingerprints":{"codehealthFindingId/v1":"efc237307eca44af6900804fdddba421ac15c3b96eb4b72d0713d3663c0414cf"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ParseSeqInstruction (cyclomatic 26): WordHandler.ParseSeqInstruction has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.SeqEval.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07c1ccdf8401d46aaac6c7546dd5a5fbb58aaf822332ca01bcef64d137a355b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.TrySetDocDefaults (cyclomatic 26): WordHandler.TrySetDocDefaults has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.DocDefaults.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"483daf087576b057af49b1a6ea4d0030f68fa37bee73aa863bd44d51c7bfe225"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.TryGetParagraphTextWithFieldSentinels (cyclomatic 26): WordHandler.TryGetParagraphTextWithFieldSentinels has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d585e7d66a9ecf86bad90d65313cad42c5e32b9545ca14562ee4d2d06498475"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 26): (anonymous) has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"dec3744a452d8027a1ebccb08875ee0567e770361169047b962f14c4196a90bf"}},{"ruleId":"D1","level":"warning","message":{"text":"BlankDocCreator.CreateWord (cyclomatic 25): BlankDocCreator.CreateWord has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BlankDocCreator.cs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"174db6758a1fb351d08f1025e8ab2e15b36cb8258ad973cf4c3602f069e48c51"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildDumpCommand (cyclomatic 25): CommandBuilder.BuildDumpCommand has cyclomatic complexity 25 (threshold 15). Most of this is not in the body itself: 1 of the 25 points is its own statement and the rest belongs to 2 function literals inside it that branch (lines 39, 72). 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":"src/officecli/CommandBuilder.Dump.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eec1e23934e2237680936875934d18a38ae777a1b8aa5542d7dbaf0309ddc4c"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildErrorBars (cyclomatic 25): ChartHelper.BuildErrorBars has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"e86e19d1be9429bb02bf931b5d5119c5ef8bdd591ae4138d0d7f049315414d09"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.HandleDataLabelDottedProperty (cyclomatic 25): ChartHelper.HandleDataLabelDottedProperty has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a73a3d5e326470e77c170cb2baadbd970241c5deb35e025cb4f06085732910"}},{"ruleId":"D1","level":"warning","message":{"text":"OleHelper.AddEmbeddedPart (cyclomatic 25): OleHelper.AddEmbeddedPart has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/OleHelper.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85bafc351d461d550ff9f96df95f2e9f2a7ba458ac7a6f46d566ca1c000d7b7"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ApplyDateGrouping (cyclomatic 25): PivotTableHelper.ApplyDateGrouping has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"07fb8dfb5a769af64b6634fd2dfe592bd26f92c3da6dffcd57ae6ab90466823e"}},{"ruleId":"D1","level":"warning","message":{"text":"SsrfGuard.IsPublicAddress (cyclomatic 25): SsrfGuard.IsPublicAddress has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SsrfGuard.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"13376bdbce2808f103de6b07a72607ed6f7a8fffcbaa780a62d97be3b4fe0c8e"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.ComputeWordPatches (cyclomatic 25): WatchServer.ComputeWordPatches has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1428}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce15aba323ddbee8f8a4f61e77247fc057f18eaaa5208f50a3c336b0e2c9ffd"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddCellIs (cyclomatic 25): ExcelHandler.AddCellIs has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a66f7d34011e309118d38d6531cea99aa86ba010f80f2f141e375c00224aea"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetSheetChildNodes (cyclomatic 25): ExcelHandler.GetSheetChildNodes has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"22f0c7b86e98dd4ced49b3c4d0b61bb6269e0cd70a20e332d10c187448eda77d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.NormalizeExcelPath (cyclomatic 25): ExcelHandler.NormalizeExcelPath has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9da644c7f868932759959a3674da2306c7948d5da486844b6d749b48368df5"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.DetectTables (cyclomatic 25): ExcelHandler.DetectTables 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":2037}}}],"partialFingerprints":{"codehealthFindingId/v1":"15114f775613bc187367c7bb743e24fbb839189699a4779f60ec1f6451456303"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ParseCellSelector (cyclomatic 25): ExcelHandler.ParseCellSelector 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":"src/officecli/Handlers/Excel/ExcelHandler.Selector.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"219f2d322cb5bd52152b077d2d2156414abd90c0de954683397ca0eefa8e12fc"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetCellRunByPath (cyclomatic 25): ExcelHandler.SetCellRunByPath has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Charts.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"56db1dbdd29009201065418ec275de5d0afdd9a2eab602304ba23a841fd4614f"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetRow (cyclomatic 25): ExcelHandler.SetRow has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.RowsCols.cs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8fa0e8b786ffb9661a56e8021dc440e672f4e8ddaa8aecf8e565e841e9087b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.PopulateWorkbookSettings (cyclomatic 25): ExcelHandler.PopulateWorkbookSettings has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"4008ee1565cbc97a29dc2a61cc2fe3a1c3eaa9b645a7890e276ee3000b6598c9"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddSlide (cyclomatic 25): PowerPointHandler.AddSlide 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Slide.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"9694868c60fc329488a7f17c2328de402410bda26750c7c729242aaa13e7b5ab"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetThemeNode (cyclomatic 25): PowerPointHandler.GetThemeNode 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Theme.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbf5fa69201092eed779d66cfae5d0c4413bebd440fc8fc6f15293b6c0fc6374"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplySdtExtraProps (cyclomatic 25): WordHandler.ApplySdtExtraProps has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2516}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dbb0864581d6509a147d2cc0e8ca1c627a30ee83c2aecc7bd9735fdbef7f514"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveSpacingFromStyle (cyclomatic 25): WordHandler.ResolveSpacingFromStyle 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea17d49a59292b9af702eb36fb23940dd74478c708271e1c95b6cd9fcd298c4b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyCropToBlipFill (cyclomatic 25): WordHandler.ApplyCropToBlipFill has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.ImageHelpers.cs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"685dcf19430c662d42cec076d93c75aa7a8318359c7cf347dd78a248f42ba262"}},{"ruleId":"D1","level":"warning","message":{"text":"AttributeFilter.Parse (cyclomatic 24): AttributeFilter.Parse 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":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d477ff5f62b33538c16c3cc552301d44cfddb59fb0b15e2198ce088184e356"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildBubbleChart (cyclomatic 24): ChartHelper.BuildBubbleChart has cyclomatic complexity 24 (threshold 15). Of this number, 23 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":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c33d6e0482b47768bc02a1c455e97fb27bcce5f27efe92d3254d59199dc406"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.ResolveCellResult (cyclomatic 24): FormulaEvaluator.ResolveCellResult 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":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":1124}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a99de1d7896aa18b87eeae98ac2d0b7ab8353c322bf7c61470b2355e903317a"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalIndex (cyclomatic 24): FormulaEvaluator.EvalIndex 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":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"28e33a27759885b42c4372f1d01ee8b781fd535291803cfc44952fd022b76745"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalOffset (cyclomatic 24): FormulaEvaluator.EvalOffset has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.References.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"6260e8b4f052c5942ba4930143937c23bc891f1adf0c6e37ad1e2cc214d12fbd"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalTrend (cyclomatic 24): FormulaEvaluator.EvalTrend has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"85641794870d6643135ad3ffda4f20a4fd4414f8f9e2fc3bb53ea9d700a7b751"}},{"ruleId":"D1","level":"warning","message":{"text":"ModernFunctionQualifier.CollectLambdaParams (cyclomatic 24): ModernFunctionQualifier.CollectLambdaParams 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":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"d937f278345f315f514772fe9ec5e2138ccc894f09f0e94dbf05615e1a755af4"}},{"ruleId":"D1","level":"warning","message":{"text":"GenericXmlQuery.TryCreateTypedElement (cyclomatic 24): GenericXmlQuery.TryCreateTypedElement has cyclomatic complexity 24 (threshold 15). Of this number, 23 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":"src/officecli/Core/GenericXmlQuery.cs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dc0b00ae1466ebcac70f0b75fc36f03d8c9862262a5c014076e7a018ffe801f"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ApplyTopNFilter (cyclomatic 24): PivotTableHelper.ApplyTopNFilter 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":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"e575571182836f911876fd9b427387db5e0f5edf727734e61e02c060029d4100"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.RefreshPivotCellsForView (cyclomatic 24): PivotTableHelper.RefreshPivotCellsForView 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":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":2092}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3a9e5c12cff5e2bef35969d629371c147dc2e1787c30144a73b30818f065049"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ApplyCalculatedFields (cyclomatic 24): PivotTableHelper.ApplyCalculatedFields 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":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":1495}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ae50368128099103dff96c4dc2b5a0e0551ce39935be93de80c14284ac75db"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildCommentRunProperties (cyclomatic 24): ExcelHandler.BuildCommentRunProperties has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfde161e51e5c7ea1f63064b280efbfcf4e89d51a1def23708603cea10414786"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.MatchesCellSelector (cyclomatic 24): ExcelHandler.MatchesCellSelector has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Selector.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce472d604d992b47a9f47afdc2f386ba0e6b63c4d3261c192223ebeeff6bb9d8"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetTableColumnByPath (cyclomatic 24): ExcelHandler.SetTableColumnByPath has cyclomatic complexity 24 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"a29b27d63adcfc673b62e73f5ad093ced50137932a6a1074366555af7c0de9de"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetOlesOnSlide (cyclomatic 24): PowerPointHandler.GetOlesOnSlide 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":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3999}}}],"partialFingerprints":{"codehealthFindingId/v1":"4955de52511611f9dc8451c62df1d6dd1c148e1101579ad29013ed8d6a60b700"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyMotionPathAnimation (cyclomatic 24): PowerPointHandler.ApplyMotionPathAnimation 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ca75177da751eff69324e2b0cb8efd24faed5a28b42c008875851502477f4e"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ParseShapeSelector (cyclomatic 24): PowerPointHandler.ParseShapeSelector 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee019349152864d8c565c9a7920512256d9eb27ef3dd29d76ab72f3f98e8743"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderConnectorSvg (cyclomatic 24): PowerPointHandler.RenderConnectorSvg has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"83448968190b6ac13e3774b24b99c83a5d4df28cfdf3844a14ec3eb6190dbbb5"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderTableSvg (cyclomatic 24): PowerPointHandler.RenderTableSvg 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":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1026}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce70fe34391bb28d1d930c61c0a9225ff50d2ad7ea9fff9d6a802368cb38a5a0"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitOleRun (cyclomatic 24): WordBatchEmitter.TryEmitOleRun 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4042}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e69eb80a8af92abbd5b666abbca580e5652df1c2dc1d45a103dc0bfd88f8fd5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddBreak (cyclomatic 24): WordHandler.AddBreak has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2000}}}],"partialFingerprints":{"codehealthFindingId/v1":"16b4f2efe88b421b4d2869d48c3629a6ba43823791b00fdbadcbe5497ee53853"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RecoverWrapperRunTexts (cyclomatic 24): WordHandler.RecoverWrapperRunTexts has cyclomatic complexity 24 (threshold 15). Of this number, 23 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d664e62d775a1b8cc0bc2c13ef6579205b191feee911599e9930f2cd2f965d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.CollectParaRunInHeaderFooter (cyclomatic 24): WordHandler.CollectParaRunInHeaderFooter 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":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":3242}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6cbbd8fcaf704a0e9812aa4c5342901f81af1a232d2abd6d2b610da3acefaba"}},{"ruleId":"D1","level":"warning","message":{"text":"SchemaHelpRenderer.RenderProperty (cyclomatic 24): SchemaHelpRenderer.RenderProperty 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":"src/officecli/Help/SchemaHelpRenderer.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ba4300d4b46e833c7b83455b4b3dc462e0cbaa6b2fa094883604d546869ea2"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 24): (anonymous) has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-sse-core.js"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"09b2dde2fb189d4a1ace6db97936e83c69b3f0b46017af4f8982a1e10890bd63"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildCreateCommand (cyclomatic 23): CommandBuilder.BuildCreateCommand 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 136). 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":"src/officecli/CommandBuilder.Import.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"9181add8136de57f477e6b6566c827c9b1df4d5d35e8d4121bf2b876b1503099"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildLabelTextProperties (cyclomatic 23): ChartHelper.BuildLabelTextProperties 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":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":3664}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6734eab641e684a80d07e5f4af74b0a16fa9637dd8002ab53c7791a16103d89"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderPie3DSvg (cyclomatic 23): ChartSvgRenderer.RenderPie3DSvg 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5190}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2e24a5c290f2c30a0daad55e743171ade9ba6f5f1de5c4ac32a2b23267b331"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalMatch (cyclomatic 23): FormulaEvaluator.EvalMatch 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":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2fbb90ad100a8c6cd4c6f711e315c50d4235916f976322eb8d69f298b050b4"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalLookup (cyclomatic 23): FormulaEvaluator.EvalLookup 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":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae81a883ca33aebb34156737f431b342aca6c7770058af2b87d28b57d3077726"}},{"ruleId":"D1","level":"warning","message":{"text":"HtmlScreenshot.CaptureClipped (cyclomatic 23): HtmlScreenshot.CaptureClipped 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":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"164c78c29346330a45d845f92111f37e8e76d884f719d907b80d0916066c40d9"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageSource.TrySniffContentType (cyclomatic 23): ImageSource.TrySniffContentType 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":"src/officecli/Core/ImageSource.cs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd9ec2fdb5c0c1a1ece77ad91a57af5bf5a0b76efaf0ce8eefbb40e834eafe1"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ReadColumnDataFromCache (cyclomatic 23): PivotTableHelper.ReadColumnDataFromCache has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1922}}}],"partialFingerprints":{"codehealthFindingId/v1":"54cce071bbadf8f44c9f8e51296c5e9215654b42b00b0db076e7a4528ac31ef5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordNumFmtRenderer.BuildCjkGrouped (cyclomatic 23): WordNumFmtRenderer.BuildCjkGrouped 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":"src/officecli/Core/WordNumFmtRenderer.cs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7828f243b9266781d1ce02a2512d381e12238f60f3c12af5cd71dfc1940a15"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.EmitSheetSettings (cyclomatic 23): ExcelBatchEmitter.EmitSheetSettings 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":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b0f8a47f8e78489f71853b23033ae262c0017eb321205074c05b8b1c45194b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ApplyTransform2DRotationFlip (cyclomatic 23): ExcelHandler.ApplyTransform2DRotationFlip 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"53fa60a5b5c5c90b8adf0dc539f601c6c792998b9dc8f8b9b844598dc43dcbe8"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ValidateSqref (cyclomatic 23): ExcelHandler.ValidateSqref has cyclomatic complexity 23 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 8 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Validation.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"8082c151131706aa434f729e751110c1336af99b5011e166dbcb4523eea75573"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.NormalizeValidationFormula (cyclomatic 23): ExcelHandler.NormalizeValidationFormula 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Validation.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c6460f3af123b8746128c99bb6ad1f82345570311eeeae85eedf277770d3b24"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ViewAsHtml (cyclomatic 23): ExcelHandler.ViewAsHtml has cyclomatic complexity 23 (threshold 15). Of this number, 18 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfb985041781ad843b2448059e89f3ac58b5aaa250a9b26994b67a28ed7a350e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.PopulateCfNodeFromDxf (cyclomatic 23): ExcelHandler.PopulateCfNodeFromDxf 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":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1930}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d301ec0eeccaa98f90a3b863bd2ae6cead56f3bbbbd7d3a709cfa78d585a5e"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.BuildPptRunFromProperties (cyclomatic 23): PowerPointHandler.BuildPptRunFromProperties has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"682c5d95e772b7107b57f8984ebc1bea69bfbaeae4299de7058c2de8e12ab8e7"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AggregateTableOuterBorders (cyclomatic 23): PowerPointHandler.AggregateTableOuterBorders has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3473}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7300f533cfb6ae35c5197dae0ceb0135c95f61ea7bc2a670293b9e9c0acacf2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.ComputeParagraphChildDocOrder (cyclomatic 23): WordBatchEmitter.ComputeParagraphChildDocOrder 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"6788e42e17d8738c5956c4f671b3aadcdcb4313dc618e6392bcbf5a804aea5d6"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.CaptureChartAnchorProps (cyclomatic 23): WordBatchEmitter.CaptureChartAnchorProps 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":3247}}}],"partialFingerprints":{"codehealthFindingId/v1":"787edb54bf0499823804d10b3199ef2d575375afc6b2e9308beaf68bfd6afe89"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitStructuredHyperlink (cyclomatic 23): WordBatchEmitter.EmitStructuredHyperlink has cyclomatic complexity 23 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4494}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a7c99947185d2556bce04a617ee1caa1a2b02e5ca151881e0bd8e14de414149"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ComputeAnchorWrapFloatCss (cyclomatic 23): WordHandler.ComputeAnchorWrapFloatCss has cyclomatic complexity 23 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"1baa280277810a5cb0b87b7548d26e4d044b0052b53bb4e0bb7fa3268d40f5d2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetConditionalTypes (cyclomatic 23): WordHandler.GetConditionalTypes 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4a95473c0eb60cacf8351d1147ca2a6bc8be04fb539e4a6ff529e7077eed864"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElement (cyclomatic 23): WordHandler.SetElement has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9c3cb5d595e94accb7ffe3756351d0ea0359430a9345aa87d22e0b06bb6573"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.PopulateDocDefaults (cyclomatic 23): WordHandler.PopulateDocDefaults 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":"src/officecli/Handlers/Word/WordHandler.Set.DocDefaults.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c26857025fd0c93ab63be8eec67a5d88ad1b7227978804d057846e25606467c"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 23): (anonymous) has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb02fca935f93afd50bf110ffd67e9884c94a38adbaffbec9e171cca757e86ba"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.CheckPositionOverlap (cyclomatic 22): CommandBuilder.CheckPositionOverlap has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1851}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2be7a6501f59593dd22b07abe8f197ff32cab178159fab2392e30803f308d5c"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderOfPieChartSvg (cyclomatic 22): ChartSvgRenderer.RenderOfPieChartSvg has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1880}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6710434104bacf1c379891b80ac91f0b80fb6bbd40f43709bfd1a7cfe33807"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.RenderStockChartSvg (cyclomatic 22): ChartSvgRenderer.RenderStockChartSvg has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2911}}}],"partialFingerprints":{"codehealthFindingId/v1":"214eaadfe161bd923650990478d8b4dc2ef33f92b77d368ce84718c90eac0d55"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelStyleManager.FontMatches (cyclomatic 22): ExcelStyleManager.FontMatches has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a272754fa7bb77ec7e0993583288fe15a5d29294a5da3041e014638a6f2d79a7"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalTextBeforeAfter (cyclomatic 22): FormulaEvaluator.EvalTextBeforeAfter 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":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c502c096b0597d1b7c323db1bf08c1b75ec4224c73234bdd1a346b9adbcea2f"}},{"ruleId":"D1","level":"warning","message":{"text":"DumpReaderInvoker.Run (cyclomatic 22): DumpReaderInvoker.Run has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/DumpReaderInvoker.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e03ca552361bfa7e68ebf24e8b90c2e9d8597365a061a693f076c98330da6604"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.FindDataPathInHtmlExact (cyclomatic 22): WatchServer.FindDataPathInHtmlExact has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"067a987c88770c86cc3ae894eb0cafcdf016df6fc7e48f762527c6a77863af92"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildDataBarMap (cyclomatic 22): ExcelHandler.BuildDataBarMap has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1358}}}],"partialFingerprints":{"codehealthFindingId/v1":"777376ce23127380fac01eb6bc0e6e21ebcaf2f2c7a6ce168c78060237a936e3"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.NormalizeGradientValue (cyclomatic 22): PowerPointHandler.NormalizeGradientValue has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d37e1a98812908746429c5b2972e44853c0af70fe54c21e43b56310780e521"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.Model3DToNode (cyclomatic 22): PowerPointHandler.Model3DToNode has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba14aa8d7d95cc6b04058cf119dfdbf1123c56d509953cf418bdcf66c6fb5ca"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ViewAsHtml (cyclomatic 22): PowerPointHandler.ViewAsHtml has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e6b2cc8397d1b63f63d2059e14fa3de6ad70783a54d4c7fd3f8a9283909b3b3"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.PathToSvgD (cyclomatic 22): PowerPointHandler.PathToSvgD has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"e962480e4a0e323d8d6a4a53342ddc88758a8696060fb441e57edfab5733cce0"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitPptx (cyclomatic 22): PptxBatchEmitter.EmitPptx has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8049f3e31cdcef2a48121d61e890334e3b6eb7f5f7570f0c166c55a22fa0c4a"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitNotes (cyclomatic 22): PptxBatchEmitter.EmitNotes has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Notes.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebab29cc6af51b4e019cf5ded8b3ac01a8445f558f3d6afda6a1b27f88a240ad"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.CoalesceHyperlinkRuns (cyclomatic 22): WordBatchEmitter.CoalesceHyperlinkRuns has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4852}}}],"partialFingerprints":{"codehealthFindingId/v1":"8573786911631963e39332ac403a7437731b9bb840ec571da9cd868d889bb971"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.StripDanglingNoteSeparatorRefs (cyclomatic 22): WordBatchEmitter.StripDanglingNoteSeparatorRefs has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf25b243f8f71a07a1d218ac964133ecdf8d15939dbe9e8a3d6d4ef2e7844165"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddTab (cyclomatic 22): WordHandler.AddTab 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":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":3239}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f6b37f4add6a86b58f14e2a16a860bcf7d876b3e15a9f9202ae42c0176243f5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderBorderCss (cyclomatic 22): WordHandler.RenderBorderCss has cyclomatic complexity 22 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":2549}}}],"partialFingerprints":{"codehealthFindingId/v1":"5186bcdb15eeac3919d6ee75125947181f01fa7d7d7410360c5b233ca3d3af5b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveBodyMetricsForMarker (cyclomatic 22): WordHandler.ResolveBodyMetricsForMarker has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Markers.cs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"6837f030967623f9ef91eb35b6f1be7cda03bb2829699fe64c2abde84c540b25"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.HyperlinkToNode (cyclomatic 22): WordHandler.HyperlinkToNode has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":2948}}}],"partialFingerprints":{"codehealthFindingId/v1":"db8604ec244880dc9320cdfc8747b69fe1518156125f84bb837d67b2def9f14b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyCommentFormatKeys (cyclomatic 22): WordHandler.ApplyCommentFormatKeys has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c432bb63ee8ebc1b3c4679367ec13470f0831c2a7e8d5a935295d1a38e3531e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.EnumerateRevisions (cyclomatic 22): WordHandler.EnumerateRevisions has cyclomatic complexity 22 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a46729b794984ec6d7aecb70fa121266b1de3f241682a47e1e348bd3b9b2ab"}},{"ruleId":"D1","level":"warning","message":{"text":"McpServer.RunAsync (cyclomatic 22): McpServer.RunAsync has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpServer.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4853bb6caab237138c18529e83f56e116a3eb38d3519e6f265a2fed2bcb948b"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.ExecuteCommand (cyclomatic 22): ResidentServer.ExecuteCommand has cyclomatic complexity 22 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd8aa31f91decb18ded5dc0fc5aa97b0a6dd95d29ea58d4eaf8f7e26f7fc920e"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 22): (anonymous) 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":"src/officecli/Resources/watch-sse-core.js"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9c88804d0889973169c0cdeed1fa78f7ddf8d398871deaeb2ddb942ea49b74"}},{"ruleId":"D1","level":"warning","message":{"text":"EmuConverter.ParseEmu (cyclomatic 21): EmuConverter.ParseEmu has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/EmuConverter.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"c89de79b75cea0cdd68077ddac81e4a71825e848fd28e128b29fe4d2f9602505"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.ApplyComparison (cyclomatic 21): FormulaEvaluator.ApplyComparison has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2edddb09607d21e793c9b8c76cb6e3386a41f986e4282a3323136ad1926addf"}},{"ruleId":"D1","level":"warning","message":{"text":"ModernFunctionQualifier.Qualify (cyclomatic 21): ModernFunctionQualifier.Qualify has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6dcf27b2de3c871be8d8e99937c0ac8cd619b37c12d89aaf41fa0d81b44efad"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.BuildMultiColItems (cyclomatic 21): PivotTableHelper.BuildMultiColItems has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"517be65127d3c3f2a1b2a48b3ffcc2c9f75882fbd3f919d442e928a0df0578aa"}},{"ruleId":"D1","level":"warning","message":{"text":"TypedAttributeFallback.TrySet (cyclomatic 21): TypedAttributeFallback.TrySet 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":"src/officecli/Core/TypedAttributeFallback.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"f715f0e5eb7a1b47af47b2c97cf8b34f568312a5449f86818705937c99789ed4"}},{"ruleId":"D1","level":"warning","message":{"text":"UpdateChecker.IsNativeBinary (cyclomatic 21): UpdateChecker.IsNativeBinary 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":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4bf2eddebadc6612bfaa6607d18d6bbac48ec3507ecefe30a534487322167bf"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BackfillSeriesRangeValues (cyclomatic 21): ExcelHandler.BackfillSeriesRangeValues 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6ea601e556eb088ca7fcb90c315f19ec7c23b85158f6189cf8c510cb72ee689"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.TryBuildRichTextHtml (cyclomatic 21): ExcelHandler.TryBuildRichTextHtml has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2924}}}],"partialFingerprints":{"codehealthFindingId/v1":"abda33d831397428fa0e3207c0f2f46266ede289d3521d7397762b248136c59d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ParseCsv (cyclomatic 21): ExcelHandler.ParseCsv has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Import.cs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce386cbd4398eb707c56f526fdae673913b1769c599528c8566e8c64d4e4d6d8"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetNamedRangeByPath (cyclomatic 21): ExcelHandler.SetNamedRangeByPath has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32b2f4be49b2e7921d5dc7ed60e8389976e0c60167727670e2243bd4d285c9a"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RemoveSingleShapeAnimation (cyclomatic 21): PowerPointHandler.RemoveSingleShapeAnimation has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1561}}}],"partialFingerprints":{"codehealthFindingId/v1":"accde46b19f9164f8479aeee55e95d961f97f67a842fde2efc5bae65789ebc32"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ChartToNode (cyclomatic 21): PowerPointHandler.ChartToNode has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Chart.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa8de1502c79d11f38c96fc05706ae8e60686e9199942174e5d456c6f2a8d0c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ZoomToNode (cyclomatic 21): PowerPointHandler.ZoomToNode has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"94e56faf778a85fecb923e9df54e2cc95cb36294eeefbfa421f080e3b0620f57"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderInheritedShape (cyclomatic 21): PowerPointHandler.RenderInheritedShape 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e2b4c8f4eac4fd1fa27fb145ddef5052c60a8bf0762a3ee67f4cfc21fadeb79"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveFillColor (cyclomatic 21): PowerPointHandler.ResolveFillColor has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2760}}}],"partialFingerprints":{"codehealthFindingId/v1":"67773994ffd83d217d01e5fc24051ff84c84114e9374c5f9ce4342e994f60119"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolvePlaceholderFontSize (cyclomatic 21): PowerPointHandler.ResolvePlaceholderFontSize has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1147}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bfd382279413a8acc00002de59b71dd272522faa22afcd1bed2d639839df695"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolvePlaceholderLevelPpr (cyclomatic 21): PowerPointHandler.ResolvePlaceholderLevelPpr has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"853411f330c5e7d5ac19358a3aeda105551f8192d5b1941251ed6dfb43581c80"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderModel3D (cyclomatic 21): PowerPointHandler.RenderModel3D has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2644}}}],"partialFingerprints":{"codehealthFindingId/v1":"72345aee53329f9d705ce96c4f229382122f1afa0a557cdbf055f2c7015a1db8"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetTableRowByPath (cyclomatic 21): PowerPointHandler.SetTableRowByPath has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Table.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc69692c2cc75c12e3a57724a676b6bd7a1fefb05bce3da2b87473bf3fb72de"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CustomGeometryToSvgPath (cyclomatic 21): PowerPointHandler.CustomGeometryToSvgPath has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b400b25f191fed7b88b4bb2dd250b82181973a9ec6c583c1f9a6572e5069111"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ViewAsStats (cyclomatic 21): PowerPointHandler.ViewAsStats 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b4712a34484279c1d05dd518542635c5db6fc520835fc0b7d9d5f15987520a9"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitWordWithWarnings (cyclomatic 21): WordBatchEmitter.EmitWordWithWarnings has cyclomatic complexity 21 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 7 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":"src/officecli/Handlers/Word/WordBatchEmitter.cs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5ec73734dcfbc47084f14ea5d6a6808e07da4ed9c1f6a223fd873302128d2e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.FoldBorderValue (cyclomatic 21): WordBatchEmitter.FoldBorderValue 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":"src/officecli/Handlers/Word/WordBatchEmitter.Filters.cs"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c244b89345e2ba1380401becfe6c9f203ee0f878dd83efad2064912549fa58"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitSdt (cyclomatic 21): WordBatchEmitter.EmitSdt has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":2629}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d397be7b57161389eeee20ab6426dcec7f4fa85d9718b418d745727a0c0ad8d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddChart (cyclomatic 21): WordHandler.AddChart 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":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"22623725e71bc62a42251f91325e2307b95bc9a8017e6244e2510227373ffa5f"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddBlockAtSplitPoint (cyclomatic 21): WordHandler.AddBlockAtSplitPoint has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"89825950088b9d873d3bd31aed3eb6d3753f651c3350eeb0ca6e2870c93296c6"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetRunText (cyclomatic 21): WordHandler.GetRunText has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Text.cs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"d77035f314c2c3882f5ad170ccec3b23da2573711b0f67dfe969c26c6f2dca9a"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderWrapNoneOverlayImage (cyclomatic 21): WordHandler.RenderWrapNoneOverlayImage 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3d4da904d65e80673a711aeffb7af27badbc33e8a0b28d8ab74893575bee8b9"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RemoveWithTrackChange (cyclomatic 21): WordHandler.RemoveWithTrackChange 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"59da704e61b3d7ba93354cf533cf239a71d67de75582e00b29fca5c1008c7c99"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetHeaderNode (cyclomatic 21): WordHandler.GetHeaderNode has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1499}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b1bd8a998616330502b820291e55eb60cffcce09c63926eab4dec355f56904"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetFooterNode (cyclomatic 21): WordHandler.GetFooterNode has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1587}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f86e0a0f5bc1f4acb19cc75347cf53067e2d788d858f335ca6e00628c10fe56"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ParseBorderValueDetailed (cyclomatic 21): WordHandler.ParseBorderValueDetailed has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bee1a6f3c43722c0060c30259819285b16778243fe9ef30d10e44c3f6b93176"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetTocPath (cyclomatic 21): WordHandler.SetTocPath 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":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad5ad9b7e37ba5aa21e9bc60d8f64abd770fadb6b583ad350216a889b93ca5b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ExtractRevisionText (cyclomatic 21): WordHandler.ExtractRevisionText has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1464}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d9597eaaf9bbcb5c3099eae40d3b802aa46e5a14818fd0c641e6470a55ffa64"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetTableStructuralBookmarks (cyclomatic 21): WordHandler.GetTableStructuralBookmarks has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e1111558563f25016dbcb7a98b8cacef8202fdeea6bbd16519f61e43cbe8289"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchItemConverter.Write (cyclomatic 20): BatchItemConverter.Write has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BatchTypes.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"115cb472ea01547c06d65723b73d525c4312bfc00d60e87e092e3ec5b4c33957"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprParser.ParsePredicate (cyclomatic 20): ExprParser.ParsePredicate 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":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":1179}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b4409c35ca1a48c41de608851b7cb888b1c25431979a6de9441e2474d80201"}},{"ruleId":"D1","level":"warning","message":{"text":"CompoundFile.WriteSingleStream (cyclomatic 20): CompoundFile.WriteSingleStream has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/CompoundFile.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"206f797e4e87a60dbf8d39d7e5b8a662ae192372351ecb8acb298d14126aef6e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateGradientFill (cyclomatic 20): ExcelStyleManager.GetOrCreateGradientFill has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1369}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2e283bffa7920796c36b56596681399b7d735a4676a66409993743d24e73d1a"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.RewriteOver (cyclomatic 20): FormulaParser.RewriteOver has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d8cf37aa739c7f1bac64ad9e558b663a1687560188d713be730285c97f543e7"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageSource.TryGetJpegDimensions (cyclomatic 20): ImageSource.TryGetJpegDimensions has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ImageSource.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2944021d48ca1c9ac92a126cd4d3d299a86143b2d0029637f77ae72a2bb7ef6"}},{"ruleId":"D1","level":"warning","message":{"text":"ParseHelpers.IsCjkOrFullWidth (cyclomatic 20): ParseHelpers.IsCjkOrFullWidth has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ParseHelpers.cs"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"359356a141946625ff6cf9efbe9f8404ed7862d6ccd88f673bbfd88cb4cd07a5"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.BuildMultiRowItems (cyclomatic 20): PivotTableHelper.BuildMultiRowItems has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ca48c3509180af2d28b5ff1ae07631937a8266e4e05b57baa908249cf1c8f74"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.ComputeExcelPatches (cyclomatic 20): WatchServer.ComputeExcelPatches has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1707}}}],"partialFingerprints":{"codehealthFindingId/v1":"901ba645d7d8bc0ff8d307192ab3514ae0759f5891da68785c43206f221aed72"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.HandlePostSelectionAsync (cyclomatic 20): WatchServer.HandlePostSelectionAsync has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"54500bb60eac2d9251941deac753920274c37977d8afac6b8a12d0e25f5e6ff7"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelBatchEmitter.EmitTables (cyclomatic 20): ExcelBatchEmitter.EmitTables has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96fada8753c5a23efb39260ba322c92f76b7087f9ccf1f0869f2bcd43184f89"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ResolveChartRangeCells (cyclomatic 20): ExcelHandler.ResolveChartRangeCells has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.ChartCache.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"d46508a150abcda422bc0c4837520e92f44d5f4d07d7ec2f9054658051fa1403"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.EvaluateCellOverflow (cyclomatic 20): ExcelHandler.EvaluateCellOverflow has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.CheckOverflow.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"232b0cbd5c718304e4a4f537ffbb25443ad8f15b31c581d6bb9e5f1b93b322ef"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.TrySetAnchorPosition (cyclomatic 20): ExcelHandler.TrySetAnchorPosition has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"9714bd2083933ebcdb95228fe5baaac02bf3b2d2a293cae028d5d0c2090065d0"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.TryResolveRowColumnCell (cyclomatic 20): ExcelHandler.TryResolveRowColumnCell has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.RowWhere.cs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d277369097de6ad492b02191072d3735e939a471d414e8925907e4b7b31ff3"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.FindDefinedNameReferences (cyclomatic 20): ExcelHandler.FindDefinedNameReferences has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"793a5df7923856c05c06c5f94617d466866b305bfff4ca3d8a74eb6e6cbeafd2"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.Raw (cyclomatic 20): PowerPointHandler.Raw has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e1c22fb4c3e90cb7185e19df8344dffe5a1d9017cd44bab78ad32f33b18b51"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetModel3dOnSlide (cyclomatic 20): PowerPointHandler.GetModel3dOnSlide has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3854}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1362e578247dec872617358f825027b5a223b9c2c394f27ec41c74111b18e2e"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetShapeStyleXmlWithOrdinal (cyclomatic 20): PowerPointHandler.GetShapeStyleXmlWithOrdinal has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4531}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b030d49a6a58571e70973c571ae0ba1c506dd7126a1fd53edd90ed353d06fbd"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.IsPlainReflectionPreset (cyclomatic 20): PowerPointHandler.IsPlainReflectionPreset has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Effects.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e8978ed9809de6d7cb07d023598ead3b3fc86d777484f1dd3ef40ea236cf95"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddPptAtFindPosition (cyclomatic 20): PowerPointHandler.AddPptAtFindPosition has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"08f2c1011956ad958bda3feffcc8c8608fe29aa3b3ed460ec08f2efef01fae97"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderSlideElements (cyclomatic 20): PowerPointHandler.RenderSlideElements has cyclomatic complexity 20 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 6 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea2c9039e3dcd912043af8732aa6e88ed61c70354c808080794ab478f2dfdf8c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderGroup (cyclomatic 20): PowerPointHandler.RenderGroup has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2324}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf60338647c423362bcdccdc5fe1abd84b68c7b5b7f5f939cc6ad841ac3a7f39"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetModernCommentProperties (cyclomatic 20): PowerPointHandler.SetModernCommentProperties has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ModernComments.cs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc988357315b6236f346147b36cb0a349c952618ca999539f2a19d5a0de042d"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CloneSlide (cyclomatic 20): PowerPointHandler.CloneSlide has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1622}}}],"partialFingerprints":{"codehealthFindingId/v1":"329fe1182c919162f0a314512b61ed359363c20b99ef83c3afcade277e63d280"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RemovePictureWithCleanup (cyclomatic 20): PowerPointHandler.RemovePictureWithCleanup has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cad0b296d56655dd028883fbbd2d5e30fc9f2827ad1aa65e191d5625e4bc261"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetGroupInnerFrameByPath (cyclomatic 20): PowerPointHandler.SetGroupInnerFrameByPath has cyclomatic complexity 20 (threshold 15). Of this number, 19 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":1563}}}],"partialFingerprints":{"codehealthFindingId/v1":"d16f2a75bc198025264ea8876d4b5709ad6b3c9dd8707dc2e6368905f85f8313"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyRprLike (cyclomatic 20): PowerPointHandler.ApplyRprLike has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.StyleList.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9d89313ff79a62f45a399269164b40bb248a8704d10d41805ff7ddd772fd69f"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitPicture (cyclomatic 20): PptxBatchEmitter.EmitPicture has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Media.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"40ee857ce6d2d2f1f671025bd69cb7917c6fc007305b8d3e1e69619bc4c7692f"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitModernComments (cyclomatic 20): PptxBatchEmitter.EmitModernComments has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Notes.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f47e2852d2a0bc581dadeee3001b8724a0ebcc6098ddbeab8097c71b905dba"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.HasCustomNoteSeparator (cyclomatic 20): WordBatchEmitter.HasCustomNoteSeparator 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f962f9efa4d0a99ad5bf33089cf2cf6a01d6f0954530ca6c429c3310e3822c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.FoldPgBordersProps (cyclomatic 20): WordBatchEmitter.FoldPgBordersProps has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3351}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d8a8a81bbfc7d0fb87df5f669086a49e439564b7a762aaeaa5a3985809b33c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyNoteRefMarkAndRevision (cyclomatic 20): WordHandler.ApplyNoteRefMarkAndRevision has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a72050c1b4351f885387eeebd66d3093ea051bd1de0e47cbee994bc97e7f5b2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.FormFieldToNode (cyclomatic 20): WordHandler.FormFieldToNode has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.FormFields.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae97ebce4128fc3ffda168817003cae0cb4fd58655345e6d8bbcc587f0e1ba2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.RenderChartExHtml (cyclomatic 20): WordHandler.RenderChartExHtml has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Charts.cs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"15296ebdf11819f073d4335009c1eed207e0e1d58501b6a91167bb3d8a95cb19"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AppendW14ReflectionBlock (cyclomatic 20): WordHandler.AppendW14ReflectionBlock has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":2147}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5918acd42c237a4bf233163f2e473a533fe3f39b872bcc7cad19375e5992868"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetPictureEffectsCss (cyclomatic 20): WordHandler.GetPictureEffectsCss has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea069a467e270620b62405afb7724088838c75deb30cea9857ab16dc86436d09"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ReadShadingCanonical (cyclomatic 20): WordHandler.ReadShadingCanonical 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6796}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ca5f27d927d26e41da6875babbc9a564762f635156fa9d7de2e3ac73d4736e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.FillUnknownChildProps (cyclomatic 20): WordHandler.FillUnknownChildProps has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6905}}}],"partialFingerprints":{"codehealthFindingId/v1":"1007482c382c0f2ac015a76db3109791f85ba8b8cf3af51c7b5768653209f5c4"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchItem.ToResidentRequest (cyclomatic 19): BatchItem.ToResidentRequest 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":"src/officecli/BatchTypes.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"25e66c70b4b749f6047ac31c51633fe5d4e8788b6fe5651159ba51ecc496ce59"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildRootCommand (cyclomatic 19): CommandBuilder.BuildRootCommand has cyclomatic complexity 19 (threshold 15). Most of this is not in the body itself: 2 of the 19 points are its own statements and the rest belongs to 3 function literals inside it that branch (lines 75, 123, 33). 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":"src/officecli/CommandBuilder.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"95106c1491b4d28caff57413a2b2e77feac4486b1859428dada72c49eba46b25"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildAppliedSuffix (cyclomatic 19): CommandBuilder.BuildAppliedSuffix has cyclomatic complexity 19 (threshold 15). Of this number, 17 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96af4656f5103b50841d9b8234b443902e07bddb8de4ef012f667a1bdbffbb5"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildTrendline (cyclomatic 19): ChartHelper.BuildTrendline has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a04e006217743b07b9d9815f9070de9c45f65c6cc8e6c7cd3dd79c8cc7fc134"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtendedPropertiesHandler.PopulateExtendedProperties (cyclomatic 19): ExtendedPropertiesHandler.PopulateExtendedProperties has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExtendedPropertiesHandler.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cb933642556d205da475117aebcb81cc8f9ffa0dc7b18958862af5804305904"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.ParseNumber (cyclomatic 19): FormulaEvaluator.ParseNumber 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":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af63f89ffb342a17998bb6f73f2e28691ef8896911e0032d1e6d9bc513fe4ac"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.Expand2DRange (cyclomatic 19): FormulaEvaluator.Expand2DRange has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":1361}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f09ee43d6dbaa88b075cbc2b0d8f5007c90ee8dd3838c9ef4f2496dcec7456"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalVlookup (cyclomatic 19): FormulaEvaluator.EvalVlookup has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"024741b930e8f52d37ec8b6b91a002fc0de4e6af2438a9edcc361c91bfa4798f"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalHlookup (cyclomatic 19): FormulaEvaluator.EvalHlookup has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f1f0f12e549bd1cd5182ddedf626f396462ff4fc67b1ddf0deb3b3e541fa41"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.ActualActualYearFrac (cyclomatic 19): FormulaEvaluator.ActualActualYearFrac 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":"src/officecli/Core/Formula/FormulaEvaluator.Securities.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac281ee0a71aabf5c29c0a5ec7e369b8425da45a5e580e2b54ee3265f43ba11a"}},{"ruleId":"D1","level":"warning","message":{"text":"ParseHelpers.SanitizeColorForOoxml (cyclomatic 19): ParseHelpers.SanitizeColorForOoxml has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ParseHelpers.cs"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd79846bb17b836dc480196bb08cab62fcd2dabc55339e22a66ca5c42a7e510e"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ReadSourceData (cyclomatic 19): PivotTableHelper.ReadSourceData has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"808238717d9ba40fa462dbbb22fea42cc97313230a51a35054653a39dcbc8af4"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.HandleClientAsync (cyclomatic 19): WatchServer.HandleClientAsync 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":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1866}}}],"partialFingerprints":{"codehealthFindingId/v1":"14fb8db496054f053b73b1c8feaabf816e38aa3b6ee10f489b736efbe81dbdf9"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AnchorToEmuRect (cyclomatic 19): ExcelHandler.AnchorToEmuRect has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"af9c497871fa2269573569774744263028bab1164b394d940c10153d873674b7"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.PopulateChartPositionFormat (cyclomatic 19): ExcelHandler.PopulateChartPositionFormat has cyclomatic complexity 19 (threshold 15). Of this number, 18 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"4469fb660c06d5f66039bad62b71c9f0a716179863fbe0e7901959da8ae5cbed"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildFormulaCfFont (cyclomatic 19): ExcelHandler.BuildFormulaCfFont 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.ConditionalFormat.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f3404ad829d00b00b215e773fb0f3b7f4b2fadcff9e857bceff555799eb45ec"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.TrySetShapeEffect (cyclomatic 19): ExcelHandler.TrySetShapeEffect has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"a10ff5d574fa8acdc986fd902673a1afae208073d550f6a3032e2d08fa060557"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildCommentTextFromRuns (cyclomatic 19): ExcelHandler.BuildCommentTextFromRuns has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"5deb1942fa344724c6d0bb2f15cc00166fdaa63db1716edfc7eae94b698a41d4"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.BuildIconSetMap (cyclomatic 19): ExcelHandler.BuildIconSetMap has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1466}}}],"partialFingerprints":{"codehealthFindingId/v1":"754055d015f8de20e3325afbaaf22a528abe1bf0c786c12a5a6e1970fa3049f0"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ViewAsText (cyclomatic 19): ExcelHandler.ViewAsText has cyclomatic complexity 19 (threshold 15). Of this number, 18 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":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"32446c5aeccc43a753df91227c2f46ccb6c0c71de6c5fb4a78eb42b5d771fb24"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ViewAsTextJson (cyclomatic 19): ExcelHandler.ViewAsTextJson has cyclomatic complexity 19 (threshold 15). Of this number, 18 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":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"39156ae3c30e6be543b854b797afc24ca2fa8fed8da1824e8974db0994be51e8"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetPictureBlipCompanionParts (cyclomatic 19): PowerPointHandler.GetPictureBlipCompanionParts has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4397}}}],"partialFingerprints":{"codehealthFindingId/v1":"bda802045af2f788367bbb1a762af04acb4380199bddf3d0a064f22d873a7669"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddModel3D (cyclomatic 19): PowerPointHandler.AddModel3D 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71221566b119a0413b61b121d7f80fd6039bc859780860f472b527bc2106831"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyBackground (cyclomatic 19): PowerPointHandler.ApplyBackground has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"fed9303fef1d3d575366cc714c468c5b744df6c3877895080b18dbe045cc4db8"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddSlideComment (cyclomatic 19): PowerPointHandler.AddSlideComment 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Comments.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1997acaddc700c5fd20becb1efe0994ff4be8bf8278f8766ecef96449550713b"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetMathElement (cyclomatic 19): PowerPointHandler.GetMathElement has cyclomatic complexity 19 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 5 belong to 5 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Text.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9e9c9d631ea23e26878f08119d4b13c23ad31ca50cfc02d85931ef6fdf51f6"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveHyperlinkTarget (cyclomatic 19): PowerPointHandler.ResolveHyperlinkTarget has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Hyperlinks.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be6f05ab4546d8cd4efcbcfe851848cd51cc0be65007dd58374c662faf44104"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.BuildGroupNode (cyclomatic 19): PowerPointHandler.BuildGroupNode 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":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"435a7fb320ce8deb38e805a58ecf3f86e90f539ce6b9ce1bff3a66162312840d"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.FillUnknownRunProps (cyclomatic 19): PowerPointHandler.FillUnknownRunProps has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":2528}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fac45bd87015155078de32d5e2c105ab951ca57e5c11cea861617529979e2b0"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.PopulatePresentationSettings (cyclomatic 19): PowerPointHandler.PopulatePresentationSettings has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Presentation.cs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af61930d69215a83242105604e81c43d613636fd8d35ab2a1e10e029fc5cfca"}},{"ruleId":"D1","level":"warning","message":{"text":"PptxBatchEmitter.EmitChartAxesIfDifferent (cyclomatic 19): PptxBatchEmitter.EmitChartAxesIfDifferent has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Charts.cs"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"12a0c2c5950753fbe23a8f8f89954b9f70b65e7cea732bbda632a1bbbedd8ec2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddDiagramNative (cyclomatic 19): WordHandler.AddDiagramNative has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Diagram.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60ec59d948fab6117f0d2ef4a1bc95fc3e5e2049b6e370057fdaa0b3aee7f2f"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.EvaluateIfFieldPlaceholder (cyclomatic 19): WordHandler.EvaluateIfFieldPlaceholder has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2786}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bde007dcb18dc860cacb3de567d997255cf774cefe90aa4b49d0606cc160941"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddTableColumn (cyclomatic 19): WordHandler.AddTableColumn has cyclomatic complexity 19 (threshold 15). Of this number, 18 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":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8a9b133de41b46fe2d667113ed188152fb2e4c59d86d194bbff776220b6c03"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.EnsureBookmarkIds (cyclomatic 19): WordHandler.EnsureBookmarkIds has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"9786b521f06f4fed0a7c953bc99f424c4d244976808cac55964054141518841b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyTabsShorthand (cyclomatic 19): WordHandler.ApplyTabsShorthand has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.RunFormat.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"49bc076b4d9b5651541d87825ac827bf6f4cb918b1f3defd55e451f602b2f4ab"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveThemeCjkFont (cyclomatic 19): WordHandler.ResolveThemeCjkFont has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":1829}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be3f044dc5ec57ed7c409e1a3ee39d71d280cd8ec6f7a1867045dd351951568"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElementSdt (cyclomatic 19): WordHandler.SetElementSdt has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"35716dcfaee9789785d1c5ede5f00a7a6cb5db636ce4a0135b8ccc5a1ec2ba79"}},{"ruleId":"D1","level":"warning","message":{"text":"SchemaHelpFlatRenderer.BuildPropertyRecords (cyclomatic 19): SchemaHelpFlatRenderer.BuildPropertyRecords has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpFlatRenderer.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"878e56ddd3b37a6bfd0b7691cc2675b0d8f8fbb3eadb9eb45f5e39c28ec9eca3"}},{"ruleId":"D1","level":"warning","message":{"text":"LenientStringDictionaryConverter.Read (cyclomatic 18): LenientStringDictionaryConverter.Read has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BatchTypes.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"430ae4e96e0529c9b4273b8c6d7828b5532cd10b461488ffb14ecab291a10190"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.ParseLiteralSeriesData (cyclomatic 18): ChartHelper.ParseLiteralSeriesData has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63b951aabdc222cdb3bc7f19824cf89bafea38b4c443523e5e91106cb7438d2"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartSvgRenderer.FitPolynomial (cyclomatic 18): ChartSvgRenderer.FitPolynomial 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":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5568}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce9e6fa69d54bac0f4415ea90201c7fec82233b54dde221498d36449a0bc197"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelStyleManager.FindOrCreateCellFormat (cyclomatic 18): ExcelStyleManager.FindOrCreateCellFormat has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1641}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9794236813117a21b180406abe3acc4ec2553164000e2cb92d2103e93e48c45"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.ParseComparison (cyclomatic 18): FormulaEvaluator.ParseComparison has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"806b41326f3cb5380005594708459b9e47e8200d951bac9fe5bd7e0d9638fcfc"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.ParseAtom (cyclomatic 18): FormulaEvaluator.ParseAtom has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"26dab4e95d5369326bc43b7a83b21cd47d9e1f8e995fe9ef09a1438a879007eb"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalTextJoin (cyclomatic 18): FormulaEvaluator.EvalTextJoin has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"90e2e2b54213879fba004faa729d99475c66aefe58da846c54f50847ab8bf0d0"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalCell (cyclomatic 18): FormulaEvaluator.EvalCell has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"03657705782d140387c13f8ee11952c045d48a3e1b5ad253335424fbbb9da6ca"}},{"ruleId":"D1","level":"warning","message":{"text":"ModernFunctionQualifier.IsDynamicArrayFormula (cyclomatic 18): ModernFunctionQualifier.IsDynamicArrayFormula has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"7baef2375cfc336170bd6bf4b5fc79c9ab6892b5b74e87cb25edc054adc44d7d"}},{"ruleId":"D1","level":"warning","message":{"text":"ModernFunctionQualifier.FindNonLiteralArrayConstant (cyclomatic 18): ModernFunctionQualifier.FindNonLiteralArrayConstant has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"a821a99a46ac2b8732461730764f98cd0fce20c940b2da88c935a20851bb50fd"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatHandlerSession.Dispose (cyclomatic 18): FormatHandlerSession.Dispose has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d10580d35c919d9be4a3f83ff2f05688313a488ad9d1698dbc0037561b94e8"}},{"ruleId":"D1","level":"warning","message":{"text":"WatchServer.RunAsync (cyclomatic 18): WatchServer.RunAsync has cyclomatic complexity 18 (threshold 15). 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, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eeb29dad97b6f78d1ca563ed044aa772b6aeecff0f4cc89104468d28c165908"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.RefreshStaleChartCaches (cyclomatic 18): ExcelHandler.RefreshStaleChartCaches has cyclomatic complexity 18 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.ChartCache.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa380b78c394bd88e4d17005c8f992a25e132821c1d46d2ef969daafc52e6081"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ValidateFormulaArgCount (cyclomatic 18): ExcelHandler.ValidateFormulaArgCount has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Validation.cs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e663da86a3aabfe35276224592ec693dcecc1d317103feab8398ec351911888"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.RenderExcelCxChart (cyclomatic 18): ExcelHandler.RenderExcelCxChart has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"41188e5436afc1787828dc71105418a5df1a6c0b78f5bb98f0c5b020abe9d5dd"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddBorderSideCss (cyclomatic 18): ExcelHandler.AddBorderSideCss 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2502}}}],"partialFingerprints":{"codehealthFindingId/v1":"4663191f7be21dd4e5b7ea50ade09a36b070f296eb3e826d0c4a359491dc8bcd"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetExternalMediaPicsOnSlide (cyclomatic 18): PowerPointHandler.GetExternalMediaPicsOnSlide has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3694}}}],"partialFingerprints":{"codehealthFindingId/v1":"e277dfd1ce66e5aa14d660e521ab3494934ec002245c25598256235fc97b0407"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetPictureBlipPassthroughChildrenXml (cyclomatic 18): PowerPointHandler.GetPictureBlipPassthroughChildrenXml has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4331}}}],"partialFingerprints":{"codehealthFindingId/v1":"5335d07ca038ae46c07310f84118d80e7bc61671b7ce59385d7599d2bc3aae9f"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetShapeParagraphFieldXmls (cyclomatic 18): PowerPointHandler.GetShapeParagraphFieldXmls has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4825}}}],"partialFingerprints":{"codehealthFindingId/v1":"e15c2c421fbf5e67681b561bd6702d04ce9de1fbbb7aa1c1733f3293a3bb713e"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddDiagramNative (cyclomatic 18): PowerPointHandler.AddDiagramNative has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Diagram.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"831c8b5b4f9473705122c1ef905d5ee2cafe6ce46044ad92505c1c71cde575a4"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ParseEffectClassSuffix (cyclomatic 18): PowerPointHandler.ParseEffectClassSuffix has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":2265}}}],"partialFingerprints":{"codehealthFindingId/v1":"60689269a6c481d4d12e90435d4d166b8485010a467f0ebc4fcf0044776aa397"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddCell (cyclomatic 18): PowerPointHandler.AddCell has cyclomatic complexity 18 (threshold 15). Of this number, 12 points are the body\u0027s own statements and 6 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"54bd5bd81ccbf80649ffccafa629945a863c6a9370f6c6aa893298163c701af1"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.MutateBackgroundImageFill (cyclomatic 18): PowerPointHandler.MutateBackgroundImageFill has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2df02f825df194e5a99dd253ea5841aa21745f5f983e991eef4af94b7b01f9"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReadSlideHeaderFooter (cyclomatic 18): PowerPointHandler.ReadSlideHeaderFooter has cyclomatic complexity 18 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"98b66d054f002bd8671c4c0544313897db93e005dbcc7584efe8050a60137009"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReadGradientString (cyclomatic 18): PowerPointHandler.ReadGradientString 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.RunFormat.cs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c52e855e8526f9f7128f8d2a7a956fd10a2a93b2c83677b7f220068798d184c"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReparseFromXml (cyclomatic 18): PowerPointHandler.ReparseFromXml has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Text.cs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c9e2e2d60d1d0c6bb72f25482db6c968e2ccf35c4686e9ea5b7174ba3e7a47"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ParseOutline (cyclomatic 18): PowerPointHandler.ParseOutline has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"8965d61ea1584983d68b4f85cf6c86c48a695328f46605b6c3b3d3869de303c7"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CopyTableCell (cyclomatic 18): PowerPointHandler.CopyTableCell has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1388}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd33a0683fa7591c60fe1a239738ce129625ff1b0a4dcd9093033bd758aaab3"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CopySlideParts (cyclomatic 18): PowerPointHandler.CopySlideParts has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1737}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ea30cae9e74729bf212136c7568ccebcc13a0feb3fce7145063b5dc150a118"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetChartByPath (cyclomatic 18): PowerPointHandler.SetChartByPath has cyclomatic complexity 18 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Chart.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"13348597e66a98706aa4902a96c42689c1d7a65e70c79e2faa67aec2d283e562"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyShapePropsCore (cyclomatic 18): PowerPointHandler.ApplyShapePropsCore has cyclomatic complexity 18 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 5 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"46de1ec799f8d31b8189d578309d058d91c386403b754f356802ff6c583d2c22"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetMorphCheckNode (cyclomatic 18): PowerPointHandler.GetMorphCheckNode has cyclomatic complexity 18 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 4 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Theme.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bee80b99200e5a04f77417ff7434ad0df5dd83a9129a2138f07189b6f4eaa09"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.SetFontScheme (cyclomatic 18): PowerPointHandler.SetFontScheme has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Theme.cs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"e66068da0d514cdafb7cd2fe666206500cbc27c977827f29ef9b8f495dfe8b49"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ViewAsStatsJson (cyclomatic 18): PowerPointHandler.ViewAsStatsJson has cyclomatic complexity 18 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3cd3870601d255438e4ffe2b4aa3ffc191ab948ab7fb978dbf76ef0a702926c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitDisplayEquation (cyclomatic 18): WordBatchEmitter.TryEmitDisplayEquation 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"14cdc36ce9694cfe8a10dd89e901aac33846499720059d54299e7b6f237d0567"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitEquationRun (cyclomatic 18): WordBatchEmitter.TryEmitEquationRun has cyclomatic complexity 18 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2012}}}],"partialFingerprints":{"codehealthFindingId/v1":"0905d7993616a1d3200fe0d1557fe425a6d1c8be9b0b28a1be8a3e3c2b0c4aa2"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitFormFieldRun (cyclomatic 18): WordBatchEmitter.TryEmitFormFieldRun has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2127}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2de836bb458062668ff282ad82f87f4d7523cddf0e70f5159cdcf6cfa946895"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyNoteSeedRevision (cyclomatic 18): WordHandler.ApplyNoteSeedRevision has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"92c0a8d310d1655f896a4e3f6cd44a5ef2c30969a9972da016fcc84d5618020d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetFormField (cyclomatic 18): WordHandler.SetFormField has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.FormFields.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"07978bd7b1f683a65f4b4c68a6bf054f646f9b4c5da1648b5a2c404d3e67c6b9"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.IsContentSpanBookmark (cyclomatic 18): WordHandler.IsContentSpanBookmark has cyclomatic complexity 18 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Text.cs"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b60476f1282ae72dd76d515c3b7e32ea11768d19f6754429cc9fbe083eea0c"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ComputeParagraphAnchorAbsoluteCss (cyclomatic 18): WordHandler.ComputeParagraphAnchorAbsoluteCss has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"d86492fb348937e5eaae39c7daffb6e536ed759c9730ab9ba617bc1c9793065d"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.CreateOleNode (cyclomatic 18): WordHandler.CreateOleNode has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.ImageHelpers.cs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e06d8777e4406954e83fa0603f8df8d075401104a18368ee2881de8d406b99"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.FootnoteToNode (cyclomatic 18): WordHandler.FootnoteToNode has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1854}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee2a4ca3263c1ca8241caba3ae274102caa30c4d9420d60fe273fd0b9a9a89aa"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.EndnoteToNode (cyclomatic 18): WordHandler.EndnoteToNode has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1945}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2e4a6600e8c07fc79f19345e9aa5444ed17b2867f005741037a94b878830ce3"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SdtBlockToNode (cyclomatic 18): WordHandler.SdtBlockToNode has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3516}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecb5ec9b936c3504d8394830b60f83025ebf87f779748c819184bbb5ebc0a671"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SdtRunToNode (cyclomatic 18): WordHandler.SdtRunToNode has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3576}}}],"partialFingerprints":{"codehealthFindingId/v1":"035ab1c0db468414d75ccd4b8b7e155f9845cda33d7c69f91b832d78ea30cc73"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetParagraphListStyle (cyclomatic 18): WordHandler.GetParagraphListStyle has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc6a7e97fc815743260f7af009680c024539bac37a21e1f329eabb6d8b805a03"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AdvanceOrderedCounter (cyclomatic 18): WordHandler.AdvanceOrderedCounter has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebf34ff1cf0c1b3b3479dab4be1f585f62bba178e2134f17a569078eab96bda5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.FindFormFieldsInParagraph (cyclomatic 18): WordHandler.FindFormFieldsInParagraph has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"17de431f21d7f25ed0c586f8298e7ac6e895140ec8d5f8b07633d1ff47e2d8d1"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.TryRawSetWithinTableFast (cyclomatic 18): WordHandler.TryRawSetWithinTableFast has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":1956}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16f9daa17748e443e06efbcbab77288bae93a2700bc8dfadc104bbba62824c4"}},{"ruleId":"D1","level":"warning","message":{"text":"SchemaHelpFlatRenderer.AppendPropertyRows (cyclomatic 18): SchemaHelpFlatRenderer.AppendPropertyRows has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpFlatRenderer.cs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"4129ddaa9f2642401f356acb82c5323f8c1250cbb2f1461519c985118924e4e2"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.SuggestPropertyWithDistance (cyclomatic 17): CommandBuilder.SuggestPropertyWithDistance has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"131b59848c71ca1eb0d19827b73d88f1b5433bb7186d0be7f38c14f20c639f83"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartExBuilder.BuildLayoutProperties (cyclomatic 17): ChartExBuilder.BuildLayoutProperties 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":"src/officecli/Core/Chart/ChartExBuilder.cs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"4340cdffa13d8cc55a1c4f0b11b0b530279739bf358402c1a39aeb788392a86e"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildDefaultRunPropertiesFromCompoundSpec (cyclomatic 17): ChartHelper.BuildDefaultRunPropertiesFromCompoundSpec has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b5013bf9d2160db1ebea669a2294b28488cfc00d956c17f2c6e78be68ae85c8"}},{"ruleId":"D1","level":"warning","message":{"text":"FontMetricsReader.SelectCmapSubtable (cyclomatic 17): FontMetricsReader.SelectCmapSubtable 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":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"116658505645e6581aa621743b5c00497e32ec476c0288be993057b442e5ac1c"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.TryParseComplex (cyclomatic 17): FormulaEvaluator.TryParseComplex has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Complex.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"831ba0e0818ab77a196e0514aa44f1b7503d88db8647119d3ad4c25942381522"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.MatchesCriteria (cyclomatic 17): FormulaEvaluator.MatchesCriteria has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f5e0eb733c3284589efcaae78e8e739793753b376f1111e334441b1962985aa"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalMinverse (cyclomatic 17): FormulaEvaluator.EvalMinverse has cyclomatic complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ddbea083eac961df38d49ee3e744b85bb06e0863e03bc66477e5c3a0c352186"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalToColRow (cyclomatic 17): FormulaEvaluator.EvalToColRow has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d0eb679f85e1693314136a64a2f24420cd634f65673010ff0c6d5e4dbef962"}},{"ruleId":"D1","level":"warning","message":{"text":"Installer.MaybeAutoInstall (cyclomatic 17): Installer.MaybeAutoInstall has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Installer.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f37d665a328813a534e21a3d781ec10ae56f9a0ddd03801b623c18287b17a3c"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ParseFieldList (cyclomatic 17): PivotTableHelper.ParseFieldList has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Parse.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2799e7dbd5eb6c069b62777417b782919c5a11e3cddd8197525b0fbe085a049"}},{"ruleId":"D1","level":"warning","message":{"text":"RawXmlHelper.StripXmlProlog (cyclomatic 17): RawXmlHelper.StripXmlProlog 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":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":1218}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fa64ddce911aa4a60233f0350646ff7ba77c94a824185025b6c34402151f1c0"}},{"ruleId":"D1","level":"warning","message":{"text":"WorksheetBloatFilter.ProcessRow (cyclomatic 17): WorksheetBloatFilter.ProcessRow has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WorksheetBloatFilter.cs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06e93cf48b1aa27abfdf95fb9b6fd187830ae43231f35a7be23e1fb7eced4ca"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.AddOle (cyclomatic 17): ExcelHandler.AddOle has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c44bf4c921ff578d7fd9b0e7596a260aa5f3a810ccd5282e277918c0a4145cd9"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.GetCellDisplayValue (cyclomatic 17): ExcelHandler.GetCellDisplayValue has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a659be6dece9e6a16cb066abf1234bb702afb3059aada2acbc74d97185a73f"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.MaybeExpandTablesForCell (cyclomatic 17): ExcelHandler.MaybeExpandTablesForCell has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"08e0fb639195fbd553e8236384103fedbe69b22c14b2d37d4e1cd2027ec3b907"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.MaybeSyncTableHeaderName (cyclomatic 17): ExcelHandler.MaybeSyncTableHeaderName has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe515dfa79ecf844105cd03d2f951c00b90a6202f957cb40e572c8f468d1698e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.DescribeRowColumnsHint (cyclomatic 17): ExcelHandler.DescribeRowColumnsHint has cyclomatic complexity 17 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Excel/ExcelHandler.Query.RowWhere.cs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89e567ef9dddde753b24f39107d6bbb886dab68a4f46ae0ad20898407357fc0"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.ViewAsAnnotated (cyclomatic 17): ExcelHandler.ViewAsAnnotated has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"51ed442b74c5761ad8a329423dbff0c5f2b409952da1368bdac23c34d73be1c6"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetTimingAudioRels (cyclomatic 17): PowerPointHandler.GetTimingAudioRels has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3165}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a9f74a5650ee87b307dca9b8f8ce910cf27e658279e7271a4151e53ed68bba"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetShapeBlipTileXmlWithOrdinal (cyclomatic 17): PowerPointHandler.GetShapeBlipTileXmlWithOrdinal has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4758}}}],"partialFingerprints":{"codehealthFindingId/v1":"9963dbc7cae09f86023d74c1fa351ef1e539784535be3b7cff034772fbb415a8"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddMotionAnimation (cyclomatic 17): PowerPointHandler.AddMotionAnimation has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1861}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb8efba5f60cac23f9866bd2ffce769b14cda3f501616f5ddf3b8d6479ddbb9"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ApplyBevel (cyclomatic 17): PowerPointHandler.ApplyBevel has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Effects.cs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"b73d9c52702dcdf25c0cddec1ceabe2166c2b95c4a568bb6c73ead5f7974d5c5"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ProcessPptFind (cyclomatic 17): PowerPointHandler.ProcessPptFind has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"a00650d3e92c7a762a4e6836ebbf8f7a6774e498b6a9f83edbe77fc73e676b94"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ReadBorderLine (cyclomatic 17): PowerPointHandler.ReadBorderLine has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Table.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfa80a23a2ff2d2f3e6c97291efb4a157d6fda3e25e6bece7e06a0885172994f"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.PatternFillToCss (cyclomatic 17): PowerPointHandler.PatternFillToCss has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee33eda744e0773a65bd482112a7c62e124d7a3d814b7c76312931fa4680abb1"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderNestedGroup (cyclomatic 17): PowerPointHandler.RenderNestedGroup has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2463}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c9f720b35e163552242510996f710dff62412bc65a83379323045c97da59d9"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.MoveTableRow (cyclomatic 17): PowerPointHandler.MoveTableRow has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"54db7bcbad10cbd2c0c37636b950f372819d465621f97ea2fd4a02493747cee5"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.BuildChildNodesIntoContainer (cyclomatic 17): PowerPointHandler.BuildChildNodesIntoContainer has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d0f7da0c39fd11a018be666f9c6f9f271bec5a7a7071dd108d939ea07495fcb"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.FormatPlaceholderType (cyclomatic 17): PowerPointHandler.FormatPlaceholderType has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4297d8f9b21759cf408cdca1ae2f5a4ac10cfb5f3a4761271a5fc563cb30184"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderAnnotatedChildren (cyclomatic 17): PowerPointHandler.RenderAnnotatedChildren 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f37c336cd84c0a1a2bf9ebb391f0680c74f2bd7c42f7516a2f147c12852cc5b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.EmitWordWithWarnings (cyclomatic 17): WordBatchEmitter.EmitWordWithWarnings has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"c677574e47c8395197e4d15067f9418a0c42258a2ec8d0448b4c69ee8a1a3e13"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitBookmarkRun (cyclomatic 17): WordBatchEmitter.TryEmitBookmarkRun has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf17d15cd6803ada6d6f59405f8ede2bbffcba9823567efc6ef397f71c12395"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.TryEmitBreakRun (cyclomatic 17): WordBatchEmitter.TryEmitBreakRun has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57618b5c43724710c2cd5bd73a728c2ffb67b78a17d5127ec016ad4f9e65a13"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddFootnote (cyclomatic 17): WordHandler.AddFootnote has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d50f407936086db8217b6a56f87c3a70c09ac92d8fa09cd8e4ee43ef420a83"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddEndnote (cyclomatic 17): WordHandler.AddEndnote has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"93c14be884e9f21743d3af0a5c4d1d0f7bad9867916b0321912b3c606c0c1efe"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplySectionColumnWidthsSpaces (cyclomatic 17): WordHandler.ApplySectionColumnWidthsSpaces has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":3059}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb245ca869f519dca64eac40607775e4d8c85581f5634362d6ac1b69df7de922"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ResolveRunLineHeightCss (cyclomatic 17): WordHandler.ResolveRunLineHeightCss has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1495}}}],"partialFingerprints":{"codehealthFindingId/v1":"c438c3bb5a2ee708f9d90c27adf5403005a6c63d2cd78398a21206bdf8f54914"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ReadSdtExtraProps (cyclomatic 17): WordHandler.ReadSdtExtraProps has cyclomatic complexity 17 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3632}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a2bd0a30fc57ecc735da50f4913f985bde16b538d5d6d422ec8a02913e6270e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ParseSingleSelector (cyclomatic 17): WordHandler.ParseSingleSelector has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Selector.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"28de4e92d8e27a1831981685e75ea75368bb641a1c01f115b613a10d3ae92ca1"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyFootnoteEndnoteFormatKeys (cyclomatic 17): WordHandler.ApplyFootnoteEndnoteFormatKeys has cyclomatic complexity 17 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"afed8d914b848f9f86fcf9a6234960afe7d9979ff06cf2217643bceae72c2944"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetElementHyperlink (cyclomatic 17): WordHandler.SetElementHyperlink has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f9cbe3785cdd08608f6e8a341fee0697b4ad7ff47e8652f12fcaa910483cdba"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.TryAutosaveAsync (cyclomatic 17): ResidentServer.TryAutosaveAsync has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ac6417a069aeb9627c3d359ce6532fedbc30d3a90764a2e6d691ef665657af"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.ExecuteDump (cyclomatic 17): ResidentServer.ExecuteDump has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"237b556579172cd23f1f9ef5227584ddfbc33e1bf55e36a3bceb23c6027f1702"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentServer.ExecuteQuery (cyclomatic 17): ResidentServer.ExecuteQuery has cyclomatic complexity 17 (threshold 15). 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, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"e574451215ddee8ec85f15b2ef28feac06d16236f98abacbae514075f9a172b6"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 17): (anonymous) has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a4ca8c80d80f8c9ef16de79cf1b1b3cbd0e53551630fe6f6f033928c122c98"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.BuildMoveCommand (cyclomatic 16): CommandBuilder.BuildMoveCommand 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 2 function literals inside it that branch (lines 433, 459). 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":"src/officecli/CommandBuilder.Add.cs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2ad447784254d67130530fc3e78e524901dac2168d854644008245cd1d8862"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.ApplySetWithCorrection (cyclomatic 16): CommandBuilder.ApplySetWithCorrection has cyclomatic complexity 16 (threshold 15). Of this number, 13 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":"src/officecli/CommandBuilder.cs"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"947f72cb0553d285b1f0d1aa4292e68f88f92016d027bdb13feaf2b8260fe4d5"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandBuilder.FormatNodesCompact (cyclomatic 16): CommandBuilder.FormatNodesCompact has cyclomatic complexity 16 (threshold 15). Of this number, 13 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":"src/officecli/CommandBuilder.GetQuery.cs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ca16af08ae170d8c7b78935a51cf6a4aa1d5dbce54a428e599c5d679671996f"}},{"ruleId":"D1","level":"warning","message":{"text":"AttributeFilter.ApplyWithWarnings (cyclomatic 16): AttributeFilter.ApplyWithWarnings has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d54c563bed7b259297a9102b2140856daf946dbb682eefdb73c52a0ef6f737"}},{"ruleId":"D1","level":"warning","message":{"text":"AttributeFilter.DiagnoseEmptyResult (cyclomatic 16): AttributeFilter.DiagnoseEmptyResult 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":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b270d95caef02e438d50a08999d4a26938fa5701574ac6f25bc207e07f60c1f"}},{"ruleId":"D1","level":"warning","message":{"text":"AttributeFilter.FilterSelector (cyclomatic 16): AttributeFilter.FilterSelector has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d9c164247a4440b943acad7723e16f5a87067b0080d087ac82bd38cd3b17fd"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.BuildFillElement (cyclomatic 16): ChartHelper.BuildFillElement has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3de86125bc09f9bcc012bd2289234978407c3d76366cf9adedbddfc4de8015c"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartHelper.ApplySeriesRangeRefs (cyclomatic 16): ChartHelper.ApplySeriesRangeRefs has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c7f34ab951305e04a626ee0420e2bb9764a4fd14a26d1b29596cb8643f1489"}},{"ruleId":"D1","level":"warning","message":{"text":"MermaidParser.Parse (cyclomatic 16): MermaidParser.Parse has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Diagram/MermaidParser.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c885f3dd199a6062b72e15877d6a610c1f61385b80b6ff913b36035da1e769"}},{"ruleId":"D1","level":"warning","message":{"text":"FontMetricsReader.GetSplitAscDscOverride (cyclomatic 16): FontMetricsReader.GetSplitAscDscOverride has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"5025d010d10ccb972c6e71af24850208052affa9cde79c8dd34389183f77ee5a"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalCumulative (cyclomatic 16): FormulaEvaluator.EvalCumulative has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1905}}}],"partialFingerprints":{"codehealthFindingId/v1":"351740c2f5f2013a668c94fdfef98c2330d63d1f59297bd454562de989e24985"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.BisectFallback (cyclomatic 16): FormulaEvaluator.BisectFallback has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Solver.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f32c1f4a3ddc4a3a1057ba495fef5feda583285f5daefddba86704d4e5ee81"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaEvaluator.EvalFilter (cyclomatic 16): FormulaEvaluator.EvalFilter has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f33c56e0339ef46edea7c50efa19621778822272841669e0f76052a416732c"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.TrimControlWordDelimiterSpaces (cyclomatic 16): FormulaParser.TrimControlWordDelimiterSpaces has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"1792ebb08a7e0ab8f9588fbbd4dcbdaf33ae37f27572a5e8caefdb7447eed7e2"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageSource.LooksLikeSvgHeader (cyclomatic 16): ImageSource.LooksLikeSvgHeader 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":"src/officecli/Core/ImageSource.cs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"d251c0a33d4c54946d41e63432a1c05c7dc5e2a824a81f8a40de4a61b8736175"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.BuildDateGroupBaseCacheField (cyclomatic 16): PivotTableHelper.BuildDateGroupBaseCacheField has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4274134fdc0362a517d8a17815cd92a2dc777dcb8a453088e7328692c7143b9"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.ResolveTableRef (cyclomatic 16): PivotTableHelper.ResolveTableRef has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32dac5c5d21917d7375b12a647aa27079953172a52b1e7bac6b37618c5c0363"}},{"ruleId":"D1","level":"warning","message":{"text":"PivotTableHelper.SanitizeXmlText (cyclomatic 16): PivotTableHelper.SanitizeXmlText has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"72a02b4dc1ee8c77299092408bb6e06b7347dbd57fc62924077366e80c01c616"}},{"ruleId":"D1","level":"warning","message":{"text":"SvgImageHelper.TryGetSvgDimensions (cyclomatic 16): SvgImageHelper.TryGetSvgDimensions has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SvgImageHelper.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c2928555ecf40db9b822d5baca2fead91e2b24608cd18c9c33c9f5f13216fb"}},{"ruleId":"D1","level":"warning","message":{"text":"WordTocBuilder.ReplaceTocFieldContent (cyclomatic 16): WordTocBuilder.ReplaceTocFieldContent has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordTocBuilder.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd85322e2e44e6e424949643b2affae23b2d97c12bc7297cadfd45960bc60fd"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SerializeRichTextRuns (cyclomatic 16): ExcelHandler.SerializeRichTextRuns has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf09d3c47de2c51106ea3537913b4f26578a344fac26649d396227d491d1b10"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.TrySetShapeFlip (cyclomatic 16): ExcelHandler.TrySetShapeFlip has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aedfc60b41e06adbc306210c610b7404445bf7b24981148c70ac0cbd78a9860"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetPictureByPath (cyclomatic 16): ExcelHandler.SetPictureByPath has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d322331bf34cd5676e6d7d56fa128cc968325ad4799c431a982c84bd40274b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelHandler.SetPageBreak (cyclomatic 16): ExcelHandler.SetPageBreak has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.RowsCols.cs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49aa59cbd0bb534453fa6f86b913b6a9070b49b5090decbb6bf2c0b7c3bd90f"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.GetActiveXOnSlide (cyclomatic 16): PowerPointHandler.GetActiveXOnSlide has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3235}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f76434da8bf0f855693ed58266731b1394f24cb44a4f9efff6dd2aa1b3aaec"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AddZoom (cyclomatic 16): PowerPointHandler.AddZoom has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1941}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc0c122dca47bcb05b3046d73456e66775a07d1d391a9ace477650144f9d6c63"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.AlignShapes (cyclomatic 16): PowerPointHandler.AlignShapes has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Align.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f68fcf075b4422930f3c9f58d5c02c6be0d68a97eef48225e9ed023657b9663"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CollectOleNodesForSlide (cyclomatic 16): PowerPointHandler.CollectOleNodesForSlide has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Ole.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c0060a33c3f5cb51af5d3d84c2bf26d0c6d897101aaaa5d8a01a9dab302b121"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.FindElementByAttrInScope (cyclomatic 16): PowerPointHandler.FindElementByAttrInScope 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 branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d75e9686f179e097c9e9ecaebecf656ddcb66c6bf58f022d6b5ff8647740d0"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.CustomGeometryToSvgPaths (cyclomatic 16): PowerPointHandler.CustomGeometryToSvgPaths has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"007ce240544c2edc60c32a7cc699c3bf585d6c1bb21923373523c633c978aa81"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveBulletColor (cyclomatic 16): PowerPointHandler.ResolveBulletColor has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2845}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c49a3dc31f1a3c4c05f39f0cd9d5cf8d016dfe0f41141e6c812f9b86966267"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.PlaceholderMatches (cyclomatic 16): PowerPointHandler.PlaceholderMatches 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"014d32e41509763e912445bc62f818df8b4854a7278e56aefb8d8f87fe2822cc"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.EnumerateRenderableElements (cyclomatic 16): PowerPointHandler.EnumerateRenderableElements has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":790}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c7609aa9c3fcc8269a952e2bec041dd578ec82a23f2fc3eefaeb4ab89a847cf"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.ResolveInheritedDirection (cyclomatic 16): PowerPointHandler.ResolveInheritedDirection has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3565}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d3217f6d441a31600e0a2c4e18f5093eeeade5fb6be0f3d6ccd0aff9addafd"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.EnumerateShapeAnimationCTns (cyclomatic 16): PowerPointHandler.EnumerateShapeAnimationCTns has cyclomatic complexity 16 (threshold 15). Of this number, 11 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":2362}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf21c8a805699bcf86ae58bb661259eac23b317cadac61039256aa2c28724f3"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.FindUnsupportedCombinator (cyclomatic 16): PowerPointHandler.FindUnsupportedCombinator has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a16232f9e797723859911c5750ea5b8a025881d45f0e5ac6fc5ea7ae72b73529"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.RenderPictureSvg (cyclomatic 16): PowerPointHandler.RenderPictureSvg has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a7173146a3d47cf131d908107f3baabc5454fdd161f743a39caf10b5591d9b"}},{"ruleId":"D1","level":"warning","message":{"text":"PowerPointHandler.BuildSvgGradient (cyclomatic 16): PowerPointHandler.BuildSvgGradient has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1655}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d3e6b5eea47c81a0c3cf08d6b3ffce5b4f355367629146df8587e3245c94b5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.ReorderLvlChildren (cyclomatic 16): WordBatchEmitter.ReorderLvlChildren has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f36ef025a9c3206f61e97df786d7294494b6a4e345bf0c9ac436680830e309"}},{"ruleId":"D1","level":"warning","message":{"text":"WordBatchEmitter.ExtractCellOnlyProps (cyclomatic 16): WordBatchEmitter.ExtractCellOnlyProps 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, 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":"src/officecli/Handlers/Word/WordBatchEmitter.Table.cs"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"caba4faf009481e41dae2b503c1cf039819e080633fb43cbbcd0352bec62917e"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AttachChartSidecars (cyclomatic 16): WordHandler.AttachChartSidecars has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a337e3167c6e3939371c6789191493a57b7b645e3b07808df7940ec70bddf0"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddInlinedPartsRun (cyclomatic 16): WordHandler.AddInlinedPartsRun has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"eebe304dfa12df44409e20796ea1511f3b8c5efde3a4a3c59eccf71fba911184"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddTextbox (cyclomatic 16): WordHandler.AddTextbox has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2937}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae42f54dc4ca007727bbd694b7a14be0c52730f3e406d41645135591293be69"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddToc (cyclomatic 16): WordHandler.AddToc 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, 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":1005}}}],"partialFingerprints":{"codehealthFindingId/v1":"02152b1f75e137bb2c59c9ef989394337926c331e2f43fe7d4acb77fbc1338d1"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.BuildMovePairIdMap (cyclomatic 16): WordHandler.BuildMovePairIdMap 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 branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a9fb783504aefc254245d44ff2879ead7b7836d118f0fb769cece43ec8e10b"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.AddAtFindPosition (cyclomatic 16): WordHandler.AddAtFindPosition has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d59d71f2b34798f876ddc434ef3d72769fa154e1e712036a84e04d3b6e6ef9"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.GetFooterTexts (cyclomatic 16): WordHandler.GetFooterTexts has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.HeaderFooter.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"241a1961e68a802fdaa32e0d1b571ed4d14824ca9c1f14ffecdcac534adefe69"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.BuildMarkerCssProperties (cyclomatic 16): WordHandler.BuildMarkerCssProperties 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Markers.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af7751a1eca0cce7ff102bcac8cfceb72dd99d054e58f0beebfee858a8b16d0"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ParseTableLook (cyclomatic 16): WordHandler.ParseTableLook has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0c24bf09e0516143faa18aac2c8b2c7d2ee39827e74083e87926dae9fa4c4c5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ParagraphHasAlignedTab (cyclomatic 16): WordHandler.ParagraphHasAlignedTab has cyclomatic complexity 16 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 2 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"244b9058e1ea774a0c4661447a9e7f3fa57d0c1b68b5d50e48856eba68be5f96"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.CopyTableColumn (cyclomatic 16): WordHandler.CopyTableColumn has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2655}}}],"partialFingerprints":{"codehealthFindingId/v1":"adbb97c3e99736de6dace3c040bab98a4241c2d01d31576774fa94e00b820464"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ValidateAndNormalizePredicate (cyclomatic 16): WordHandler.ValidateAndNormalizePredicate has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a0a02e5853c086ea3c315a04511196fc23dc3fc9ed3fdfff9d25afc0aea9e0"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.SetWatermarkPath (cyclomatic 16): WordHandler.SetWatermarkPath has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e0458ae968e015f9385e3db5e0c18828730a1f47d542ce51e54c92cca34cd5"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ApplyParagraphMarkRevisionNamespaces (cyclomatic 16): WordHandler.ApplyParagraphMarkRevisionNamespaces has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"402a2f93595c2120f79695de2b60aea6fd4820ac68acc21614b6b38f86e292de"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.ViewAsOutline (cyclomatic 16): WordHandler.ViewAsOutline 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":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"edec63c0c7ebbf54931289aa96491dc8f4e2c9b347dd4f7ab305f79ca828a3cc"}},{"ruleId":"D1","level":"warning","message":{"text":"WordHandler.EnsureUniqueMoveRunIds (cyclomatic 16): WordHandler.EnsureUniqueMoveRunIds 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":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":2301}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b4fe9363359975c262a7defbf357b0007362996d0f28a7e34155dfa85b19d75"}},{"ruleId":"D1","level":"warning","message":{"text":"ensureCliBinary (cyclomatic 16): ensureCliBinary 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":"sdk/node/index.js"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"b38ae2f067c777b6b17a9e97460e6c1ba626708111b08aabfe9ac2229af3f8c2"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.SetChartProperties (cognitive 1567): ChartHelper.SetChartProperties has cognitive complexity 1567 (threshold 15). Of this number, 1550 points are the body\u0027s own statements and 17 belong to 8 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe164d4c48a63005e79b01caf6fd49116478fddb0ffe402c27f57a0e38aa9d1"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ParagraphToNode (cognitive 1182): WordHandler.ParagraphToNode has cognitive complexity 1182 (threshold 15). Of this number, 1145 points are the body\u0027s own statements and 37 belong to 22 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3838}}}],"partialFingerprints":{"codehealthFindingId/v1":"db6210d39c9f8ffe13e75c8effd7d01c5a904aebdff25555ef5b34110187df03"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.QueryDispatch (cognitive 1164): WordHandler.QueryDispatch has cognitive complexity 1164 (threshold 15). Of this number, 1160 points are the body\u0027s own statements and 4 belong to 4 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a81479a5a5593b370b1b7f157e9ea4d82c28227e5b8ad3ce54f9d30060d1f8"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetRunOrShapeProperties (cognitive 1162): PowerPointHandler.SetRunOrShapeProperties has cognitive complexity 1162 (threshold 15). Of this number, 1154 points are the body\u0027s own statements and 8 belong to 4 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78f8b7e487b19a4a29c36b779e3f377c5a40f85f9ca0d7380e9e5ba89bb7e57"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ReadChartProperties (cognitive 766): ChartHelper.ReadChartProperties has cognitive complexity 766 (threshold 15). Of this number, 758 points are the body\u0027s own statements and 8 belong to 6 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe999878f49f4dfde382b774e5d401e4fc9dfd4d92f988bbbd9ca6ab5b911f3"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderBarChartSvg (cognitive 711): ChartSvgRenderer.RenderBarChartSvg has cognitive complexity 711 (threshold 15). Of this number, 703 points are the body\u0027s own statements and 8 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"200fb6d76662ccef2d67d83860acd39b8b78146a8bd0ba25adfea29c34f9127b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.Get (cognitive 684): PowerPointHandler.Get has cognitive complexity 684 (threshold 15). Of this number, 680 points are the body\u0027s own statements and 4 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7cfe3d65eac3b105cc09b0f2249669d304b17d4914cff40978d5786dc8762d7"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddPart (cognitive 664): PowerPointHandler.AddPart has cognitive complexity 664 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"49705ce7df37edec58ca6e92607dff49ad197a898174bbf212eff9ffdaef90ab"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetSheetLevel (cognitive 659): ExcelHandler.SetSheetLevel has cognitive complexity 659 (threshold 15). Of this number, 655 points are the body\u0027s own statements and 4 belong to 4 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc85e13819a122c13a8a0448ff87b491992fde5ff874de76034a362b6d558b9c"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ShapeToNode (cognitive 643): PowerPointHandler.ShapeToNode has cognitive complexity 643 (threshold 15). Of this number, 635 points are the body\u0027s own statements and 8 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"60bd1c3d20276282a696bf98e6be6b2b08262a9ed29c369f69f279ee2a404482"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddParagraph (cognitive 642): WordHandler.AddParagraph has cognitive complexity 642 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"4476dac41e4929dd53aaecc644e4e55e639369eda55ba45e583662b569c4562a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.QueryDispatch (cognitive 595): ExcelHandler.QueryDispatch has cognitive complexity 595 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"94bcef63204a39a499fd6c80be18f104a87fad56dd93ba92a1b77a927d73b2d4"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.Get (cognitive 593): WordHandler.Get has cognitive complexity 593 (threshold 15). Of this number, 592 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff950ec5929d9c2d2be7cf4072a3b5aa48ee965d0f7b576845f6ef54aed02e11"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.QueryDispatch (cognitive 555): PowerPointHandler.QueryDispatch has cognitive complexity 555 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":1547}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d58859f642d17f6b8f3260e612e1a29e185241a44faeec37e82fd37c44569d0"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetTableCellProperties (cognitive 495): PowerPointHandler.SetTableCellProperties has cognitive complexity 495 (threshold 15). Of this number, 490 points are the body\u0027s own statements and 5 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":2699}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f3b0b8969430c1aca689189ee5f352bf2a84d541df61cce63b25a15d213edc"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.Get (cognitive 473): ExcelHandler.Get has cognitive complexity 473 (threshold 15). Of this number, 461 points are the body\u0027s own statements and 12 belong to 6 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"91c64595039af2f3777381de648581c6e0d565f7afe18550489ed14d8f731d69"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderBodyHtml (cognitive 447): WordHandler.RenderBodyHtml has cognitive complexity 447 (threshold 15). Of this number, 440 points are the body\u0027s own statements and 7 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":2461}}}],"partialFingerprints":{"codehealthFindingId/v1":"63477ea5504f9d4b475e511f025c1976624288a41452d9ad0993cfcd3659f06e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.Remove (cognitive 427): ExcelHandler.Remove has cognitive complexity 427 (threshold 15). Of this number, 425 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6088b7c3b19562244ffbc56bb3cc026415b1449ed7f84a64c4b8e5bd3a06154"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitTable (cognitive 425): WordBatchEmitter.EmitTable has cognitive complexity 425 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Table.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d772e7080d587b64235dab0bc86b239df667e151e6acdee1542c9bfbe1ad4d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.Remove (cognitive 413): WordHandler.Remove has cognitive complexity 413 (threshold 15). Of this number, 402 points are the body\u0027s own statements and 11 belong to 11 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e223a6793f815e1db751d1dffcc2a717d0398995788eb15aada4a7d3fc26e79"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ApplySheetRangeMutations (cognitive 404): ExcelHandler.ApplySheetRangeMutations has cognitive complexity 404 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4da1c8af792783278e942b1c0c50b60fa54416fe0602328fc276dec5dae7ceb"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddRun (cognitive 394): WordHandler.AddRun has cognitive complexity 394 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":2162}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37a569b09014bb579425436c59973982ad7546c0b8953eaa5fd39e1a81b3d14"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RunToNode (cognitive 393): WordHandler.RunToNode has cognitive complexity 393 (threshold 15). Of this number, 391 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":2081}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5acfea126c95906893536cc132e357328130a712668f81bea735d4aa7db3825"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CellToNode (cognitive 361): ExcelHandler.CellToNode has cognitive complexity 361 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2a2ff64bff60a42c5f0a0ac859e1b44dec1533d992d1f0d028d11f31623f923"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementTableCell (cognitive 356): WordHandler.SetElementTableCell has cognitive complexity 356 (threshold 15). Of this number, 353 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1755}}}],"partialFingerprints":{"codehealthFindingId/v1":"14ed030eec799830e9bbcc4f47aeef87adc7d2d65de2f8a29fa67088b3d1d574"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.SetAxisProperties (cognitive 351): ChartHelper.SetAxisProperties has cognitive complexity 351 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Axis.cs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b2d865d2ed189c3c206fa4a0998013055dc21acc84fca7c7fd4d6b1e91f7cd"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.ExtractChartInfo (cognitive 343): ChartSvgRenderer.ExtractChartInfo has cognitive complexity 343 (threshold 15). Of this number, 339 points are the body\u0027s own statements and 4 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":3325}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6569c92f75691f1f0218406c3d1c949749e775d69d7e946aeb87b510c3024c"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RenderGeneralPivot (cognitive 332): PivotTableHelper.RenderGeneralPivot has cognitive complexity 332 (threshold 15). Of this number, 330 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1754}}}],"partialFingerprints":{"codehealthFindingId/v1":"3549670857c4b1a0a6a8e33e1fe15574c29ce3c0a89d9b209a4eec55b97e2e83"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseCommand (cognitive 324): FormulaParser.ParseCommand has cognitive complexity 324 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":1284}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c21f12c570f89825aec03257f6b7041fa3855410307ea3854b1fffa6794823"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.TableToNode (cognitive 314): PowerPointHandler.TableToNode has cognitive complexity 314 (threshold 15). Of this number, 312 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"e03f202c9ca0f76dc63c4e9cd027fad1bfb5ce7003108874a7568f4634c6648d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddShape (cognitive 309): PowerPointHandler.AddShape has cognitive complexity 309 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa5719e2f17419cb06c8d8689223554b90d644c3b72934655d5cdda5367ab05"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RenderMatrixPivot (cognitive 305): PivotTableHelper.RenderMatrixPivot has cognitive complexity 305 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1293}}}],"partialFingerprints":{"codehealthFindingId/v1":"42312890cf27ebecfb156630f71904288456927a60cad7956d32e7e29910137b"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderTableHtml (cognitive 292): WordHandler.RenderTableHtml has cognitive complexity 292 (threshold 15). Of this number, 284 points are the body\u0027s own statements and 8 belong to 5 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d77684df67037e5122093466f9575c2913e98769b28088285a48182da66cf9d"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildViewCommand (cognitive 282): CommandBuilder.BuildViewCommand has cognitive complexity 282 (threshold 15). Most of this is not in the body itself: 0 of the 282 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 57, 116). 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":"src/officecli/CommandBuilder.View.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"60e72a0be1b3fe5afd216bf146f517f4993f0b4f78660758bfe63eea093c1f14"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyRunFormatting (cognitive 276): WordHandler.ApplyRunFormatting has cognitive complexity 276 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.RunFormat.cs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c405e0a380de4d7f4173641fa74e9e475e85558d10965af76eaf9c50136875e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementRun (cognitive 276): WordHandler.SetElementRun has cognitive complexity 276 (threshold 15). Of this number, 274 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"303318d6df7ab16ff540525114caca94c2d22d6ac1d6e51108bd15692396e5a1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ApplyCellProperties (cognitive 270): ExcelHandler.ApplyCellProperties has cognitive complexity 270 (threshold 15). Of this number, 266 points are the body\u0027s own statements and 4 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Cells.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddeade0f7b0de3adb75edac80f0fa19e9c30c56b18341f800c66fd0ffabd0ee7"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ViewAsIssues (cognitive 270): PowerPointHandler.ViewAsIssues has cognitive complexity 270 (threshold 15). Of this number, 269 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6bf68894669557c75802d4aa1aab716d4cc4e0702d13bb571c79be5fa41f11"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderShape (cognitive 267): PowerPointHandler.RenderShape has cognitive complexity 267 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd33f80fa1ca923052e068971869b5cc2f038046df3dd8d8803b111646c884aa"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.ExecuteView (cognitive 254): ResidentServer.ExecuteView has cognitive complexity 254 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0af431c4e6a999bb8bb8c132941282127161cfc755afba38c641afd2b2ce29c"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyPicturePropertiesCore (cognitive 252): PowerPointHandler.ApplyPicturePropertiesCore has cognitive complexity 252 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8548cc65f8e34781d36078ded89662aee3ebf845e9e0a6e6321e4d7f656c028"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.Remove (cognitive 245): PowerPointHandler.Remove has cognitive complexity 245 (threshold 15). Of this number, 244 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"544c22a555d462881bd8f76fd7655fccdbc6c776807deb1cfd43dff9a7328120"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderRunHtml (cognitive 245): WordHandler.RenderRunHtml has cognitive complexity 245 (threshold 15). Of this number, 239 points are the body\u0027s own statements and 6 belong to 5 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8d29a25f8e5ba7cc76bbb281869927d1a4afda551844fbb74b4a793189f688f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TableToNode (cognitive 238): WordHandler.TableToNode has cognitive complexity 238 (threshold 15). Of this number, 234 points are the body\u0027s own statements and 4 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3013}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9867f49d10ba758562043edf7c89cc2ca965d58c79f82719b583aa31cbb74e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderTextBody (cognitive 236): PowerPointHandler.RenderTextBody has cognitive complexity 236 (threshold 15). Of this number, 233 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad348c8afa70115a47feda4a315f965e46ef5a1cc7ba14082714b091378e53e"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderLineChartSvg (cognitive 227): ChartSvgRenderer.RenderLineChartSvg has cognitive complexity 227 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b0e39d960a5e7d55551b006e384961a341b3174180e6454294d60d180962e63"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RenderSheetTable (cognitive 225): ExcelHandler.RenderSheetTable has cognitive complexity 225 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac3a661213c8d0529f6fd7d9ceec89595f8ce796a1c104765698d69bb7fe2c03"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.NavigateToElement (cognitive 223): WordHandler.NavigateToElement has cognitive complexity 223 (threshold 15). Of this number, 187 points are the body\u0027s own statements and 36 belong to 15 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba0839c0ce92e06f13147a865a2809c903d0bc10a28ca9689fa000cb9e05de99"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddPicture (cognitive 217): PowerPointHandler.AddPicture has cognitive complexity 217 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"deec4a0e15421fe52cb1d6cca7908bb4d37e6c62e73ddebe00472df9b775ce0f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddTable (cognitive 215): WordHandler.AddTable has cognitive complexity 215 (threshold 15). Of this number, 213 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"3007e939d9c119432115c0c3a49e01dfaa6be1cd9ebf95a4ce6c0144c7835801"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddTable (cognitive 213): ExcelHandler.AddTable has cognitive complexity 213 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"6056449a209fd9998741399bbf981321734f1c979aafb3c53c206b11dee2729d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetParagraphInlineCss (cognitive 209): WordHandler.GetParagraphInlineCss has cognitive complexity 209 (threshold 15). Of this number, 207 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a9999bd4d765a1ee36e783c8045dcdeb2c2614f2743042959f82e1e2e0dc952"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.Tokenize (cognitive 206): FormulaEvaluator.Tokenize has cognitive complexity 206 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb7696a4593ad90a691e36404e56be28db55c708d91a34fbefb3caef4c84c3e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.CollapseFieldChains (cognitive 204): WordBatchEmitter.CollapseFieldChains has cognitive complexity 204 (threshold 15). Of this number, 203 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Fields.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca6d2f69f68a8510c10a1401f0c5f5c75f2305ed5a24775ead04111e37407d2b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyConnectorProps (cognitive 198): PowerPointHandler.ApplyConnectorProps has cognitive complexity 198 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4266bde0c9f5b5338457601988ab7bb66417794214771a562195adadf1e913"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderAreaChartSvg (cognitive 197): ChartSvgRenderer.RenderAreaChartSvg has cognitive complexity 197 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1995}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6bbd57c7fa6da0bd3b6dcddfaa904bc4a0912053df2ad15f0c26ed024f6e5d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddStyle (cognitive 197): WordHandler.AddStyle has cognitive complexity 197 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":1137}}}],"partialFingerprints":{"codehealthFindingId/v1":"04cb084d7a9949367f23b3875ec580de917adabb59026c4788ecc57292d06c00"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddRun (cognitive 194): PowerPointHandler.AddRun has cognitive complexity 194 (threshold 15). Of this number, 193 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea24b6db73aa3bd7f78224643fae40d4bcb5e31e36d7b1d998b7b32dd2354b37"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitFieldRun (cognitive 193): WordBatchEmitter.TryEmitFieldRun has cognitive complexity 193 (threshold 15). Of this number, 192 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2183}}}],"partialFingerprints":{"codehealthFindingId/v1":"371c2ed22814c3c96d1f4ffdef1608f6b65c57bc4c880ccdefc40e0076812539"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ProcessFindInParagraph (cognitive 193): WordHandler.ProcessFindInParagraph has cognitive complexity 193 (threshold 15). Of this number, 191 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"2367bce45fcc5206975827c0eba8a6ee229798becff511cfe44da7b70fb45061"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BeginTrackChangeIfRequested (cognitive 185): WordHandler.BeginTrackChangeIfRequested has cognitive complexity 185 (threshold 15). Of this number, 118 points are the body\u0027s own statements and 67 belong to 6 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ad42b7efad21a41fe47798291083c0f291d298eb1e1a95b4f45c75a7206a04"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetRootNode (cognitive 183): WordHandler.GetRootNode has cognitive complexity 183 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f61f382a534ca59ac94e70681656ed7f4dda3433b5a2a58daae58958f0bd0d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ReadCellProps (cognitive 183): WordHandler.ReadCellProps has cognitive complexity 183 (threshold 15). Of this number, 182 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6387}}}],"partialFingerprints":{"codehealthFindingId/v1":"4551172cd3492c9f340460d59e79d1159eb0d8911d67593f6dce3600b1c8f503"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RenderMultiColPivot (cognitive 182): PivotTableHelper.RenderMultiColPivot has cognitive complexity 182 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ca9f5cc74a1481fc9f9323efd40a7588f94e8c06feec96d3b404ef6ae98f23"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderRun (cognitive 180): PowerPointHandler.RenderRun has cognitive complexity 180 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c625441bf3ce00fa13b68446f98f5dfef1f5a8f811f513f6a4e9bfb821807f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderTable (cognitive 178): PowerPointHandler.RenderTable has cognitive complexity 178 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Tables.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5b73304c958192d75a07a612ca1908d29a326260d71d221fbd053ccceb2a74e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.PictureToNode (cognitive 178): PowerPointHandler.PictureToNode has cognitive complexity 178 (threshold 15). Of this number, 177 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":2579}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c4b720401d49ed278211a70e743b179143fec8e4a5551fb85282e0f1f649932"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetTablePropsCore (cognitive 178): PowerPointHandler.SetTablePropsCore has cognitive complexity 178 (threshold 15). Of this number, 173 points are the body\u0027s own statements and 5 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Table.cs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"43fc240a80d34d83dd74b72e0dca24eb55df37e8d074ad073515a0107d9ff3c9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementParagraph (cognitive 173): WordHandler.SetElementParagraph has cognitive complexity 173 (threshold 15). Of this number, 172 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1135}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e4adaee0d24a81da690d43d4d348b55035642c30ef51abf0c2c63d8d7749002"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderPicture (cognitive 172): PowerPointHandler.RenderPicture has cognitive complexity 172 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1391}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c54a0ce81ade3b5b712ca3327e0e5fe757c5e42c802c8415429d25b6c60eedc"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementTable (cognitive 171): WordHandler.SetElementTable has cognitive complexity 171 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":2654}}}],"partialFingerprints":{"codehealthFindingId/v1":"32644dfc83a8bf16fdb02930c24b13607b2325d3b9cb83f6b21fb18e8a36a17e"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartExBuilder.HandleSetKey (cognitive 166): ChartExBuilder.HandleSetKey has cognitive complexity 166 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.Setter.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8512a9c1994e1b9aeb3ed98e204a21e4a01a2e0c44884df904bfa4f22357c1f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderParagraphContentHtml (cognitive 163): WordHandler.RenderParagraphContentHtml has cognitive complexity 163 (threshold 15). Of this number, 162 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c6e934221ecd0aed821e159b71478d2dc072af628ed7f7fedda0f7061000345"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CopyFrom (cognitive 158): ExcelHandler.CopyFrom has cognitive complexity 158 (threshold 15). Of this number, 154 points are the body\u0027s own statements and 4 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8cc2cf964c18f09344743130b2c7845bacbad44d667f5cca0c98ef455a027e9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddPicture (cognitive 156): WordHandler.AddPicture has cognitive complexity 156 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea6d4f9a66a9404dc6975c780a5caba8c692822e1401db0a0052d88fbb5c52f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddCell (cognitive 156): WordHandler.AddCell has cognitive complexity 156 (threshold 15). Of this number, 152 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc3b6a31e1ee8f514cd752616029eeb42f8ac927fc931dfbbc252bc005e14845"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderBar3DSvg (cognitive 155): ChartSvgRenderer.RenderBar3DSvg has cognitive complexity 155 (threshold 15). Of this number, 144 points are the body\u0027s own statements and 11 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4990}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2f075afd3350df8c2e7ea90377d342dfbd3dbf06173cc99504177e932da8d6"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildSetCommand (cognitive 154): CommandBuilder.BuildSetCommand has cognitive complexity 154 (threshold 15). Most of this is not in the body itself: 0 of the 154 points are its own statements and the rest belongs to one function literal inside it that branches (line 32). 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":"src/officecli/CommandBuilder.Set.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff8ee1b1ce1985079b321e5ec9e10149b71a28f17854f0df2960fd7f347af08"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.ExecuteBatchItem (cognitive 153): CommandBuilder.ExecuteBatchItem has cognitive complexity 153 (threshold 15). Of this number, 152 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"002c59d8490e691ec8989753833ed2c22e9abb1832c4efff20400c6718247dbb"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddSection (cognitive 152): WordHandler.AddSection has cognitive complexity 152 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4735786562e31d5c4aa8ad29718b95ecbee6f6fa8de8af6850b632e86f5b178"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RenderMultiRowPivot (cognitive 151): PivotTableHelper.RenderMultiRowPivot has cognitive complexity 151 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f5dcb8c507524b933b077d96e9f07dc0e0c94b3920573e7be2dddef0d03903"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.Move (cognitive 150): ExcelHandler.Move has cognitive complexity 150 (threshold 15). Of this number, 147 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30441edf939f49a3cf02ee8185703fb69f197f848831501ce04965afaca3fdc"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveParagraphStyleCss (cognitive 148): WordHandler.ResolveParagraphStyleCss has cognitive complexity 148 (threshold 15). Of this number, 147 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b4c8d2226bf68ebf3ccae2d6be736adb79e7ef9800d413edeeb36dd9d9168f8"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ReadPivotTableProperties (cognitive 147): PivotTableHelper.ReadPivotTableProperties has cognitive complexity 147 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Readback.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"26742b45600a7988d7dac3248859c4e3341eb43faf34b25727cd76b482eb1ea5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddEquation (cognitive 147): WordHandler.AddEquation has cognitive complexity 147 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":1785}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d8ce70a08f0c53221dad543c711cb5b5be692ab61d340897ba6aaeaa16005a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.Set (cognitive 146): WordHandler.Set has cognitive complexity 146 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"048894173507f9a009b808ece3702b4e3473316ba325d6d69769d93ba9cc69f7"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpRenderer.RenderHuman (cognitive 146): SchemaHelpRenderer.RenderHuman has cognitive complexity 146 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpRenderer.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"2259da19b7d8736a2b6a4cac465fd1e856ef868f6559096bf1c35684bd81bf25"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.SetPivotTableProperties (cognitive 145): PivotTableHelper.SetPivotTableProperties has cognitive complexity 145 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Set.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72575e8dff972cda9cbfa7a5a35f4c7fe140601cb582110ddcf0eac68d227bd"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetAbstractNumPath (cognitive 145): WordHandler.SetAbstractNumPath has cognitive complexity 145 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":1253}}}],"partialFingerprints":{"codehealthFindingId/v1":"0de1500ec54d71f0b6ea40510bc31f6b1103b765da45ec79318de5209e42f511"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RenderPivotIntoSheetCore (cognitive 144): PivotTableHelper.RenderPivotIntoSheetCore has cognitive complexity 144 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f335e6405148983b4bb0cec5433b72716713bfd45b299ef0176422385a01fc3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.PopulateCfNodeFromRule (cognitive 144): ExcelHandler.PopulateCfNodeFromRule has cognitive complexity 144 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd63f3604a8a2a3d244b91b0f552e081767fbbadfb90dd057996dc0ebd7b2f4"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.ApplyStyle (cognitive 142): ExcelStyleManager.ApplyStyle has cognitive complexity 142 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"416f1f7771312e358981a99c2a5b58d1f947eafeb161abb5b843c41181bd0fdd"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.FilterEmittableProps (cognitive 142): WordBatchEmitter.FilterEmittableProps has cognitive complexity 142 (threshold 15). Of this number, 135 points are the body\u0027s own statements and 7 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":"src/officecli/Handlers/Word/WordBatchEmitter.Filters.cs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05fe247aa164fe8d7eddb8645d0a933315fdcfc960f4a8dc3f20ccdf0efb7e1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RewriteSidecarRefsAfterSort (cognitive 141): ExcelHandler.RewriteSidecarRefsAfterSort has cognitive complexity 141 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad0e4413b21c4c26f0b03a5169864ea79bc7b827287fa7f573b6f54d16b354c"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitChart (cognitive 139): PptxBatchEmitter.EmitChart has cognitive complexity 139 (threshold 15). Of this number, 135 points are the body\u0027s own statements and 4 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Charts.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"523324fa9a6df0f62bd4ffa0e6ffff41372eea9925595370341ed9fbbe248e30"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RejectAllChanges (cognitive 139): WordHandler.RejectAllChanges has cognitive complexity 139 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2208}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f82ef7792329de67e2ace5d952d44ef2f75718540fdebfc6cc85490e167aaf"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildBatchCommand (cognitive 138): CommandBuilder.BuildBatchCommand has cognitive complexity 138 (threshold 15). Most of this is not in the body itself: 0 of the 138 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 149, 189). 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":"src/officecli/CommandBuilder.Batch.cs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"310604486c9d2eff9d366170364cf71c11d8cecc7d30db26cf727550bf43d6ad"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetTableCellInlineCss (cognitive 138): WordHandler.GetTableCellInlineCss has cognitive complexity 138 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":2219}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ea41715e2f9d3ae5fb3a925faa7728b1ddb1bf67655d9eebff6b0e8221013f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetRunInlineCss (cognitive 135): WordHandler.GetRunInlineCss has cognitive complexity 135 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"8de3793dc1928c6ad88ce9e8a984a38475cf60f559e993782069ab177b214ba5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildSectionNode (cognitive 135): WordHandler.BuildSectionNode has cognitive complexity 135 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":973}}}],"partialFingerprints":{"codehealthFindingId/v1":"4989eb736c789649af7e91b197f85712fa1223560825d79e12355312ad311e95"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.HandleSeriesDottedProperty (cognitive 134): ChartHelper.HandleSeriesDottedProperty has cognitive complexity 134 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"d202c2414c10289fffc63986398fc08600b8ca68bea3264ed98a32dbda1a7383"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.Set (cognitive 133): PowerPointHandler.Set has cognitive complexity 133 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"3719e10ad07cf66e5c7bd5eeabd6696882ce3e9a5c327c004e089e18f6e2e20f"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ToLatexByName (cognitive 132): FormulaParser.ToLatexByName has cognitive complexity 132 (threshold 15). Of this number, 130 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cbaf9a0a4efd8a352d8581a432749f7938a19b9135c69846bf151df063d192b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetSmartArtsOnSlide (cognitive 131): PowerPointHandler.GetSmartArtsOnSlide has cognitive complexity 131 (threshold 15). Of this number, 128 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3313}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f6a961febc12e066c2b9ea7609b3f9540ef887facc69b18f31cf9dac4e9f88d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetStylePath (cognitive 130): WordHandler.SetStylePath has cognitive complexity 130 (threshold 15). Of this number, 129 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":1639}}}],"partialFingerprints":{"codehealthFindingId/v1":"84fc048f7824a1d984764077ff6c60f1c37bf223545083444665e132d5e8c618"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveEffectiveParagraphStyleProperties (cognitive 130): WordHandler.ResolveEffectiveParagraphStyleProperties has cognitive complexity 130 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd899b03351c1788da8bf89f3dd13e99b3bed5ce82f842113ab526d05feb42d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RunToNode (cognitive 129): PowerPointHandler.RunToNode has cognitive complexity 129 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":2237}}}],"partialFingerprints":{"codehealthFindingId/v1":"537a6df2b13afbacf7b208b470cccb27b3f5dc486f2c4c9f3c767956c1fa606a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsIssues (cognitive 129): WordHandler.ViewAsIssues has cognitive complexity 129 (threshold 15). Of this number, 128 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"77e9178d236332a1860bcf22cc3460eae528c34d63bdc6f65e62c5e82704eaf6"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RebuildFieldAreas (cognitive 128): PivotTableHelper.RebuildFieldAreas has cognitive complexity 128 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Set.cs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"048e2ed07d85e1917f8c697ad4bbc0e357d0d31b2232d32d48f10cf57a1ff7b8"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsIssues (cognitive 127): ExcelHandler.ViewAsIssues has cognitive complexity 127 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb6740644acf2ceb43f7246ac57f9702467f65d153f5f69a813efff0cd8ad7b"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetTableByPath (cognitive 126): ExcelHandler.SetTableByPath has cognitive complexity 126 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b54b8f107b65800bee539f223f6853ada01fdd79504f04c25d16ad12f8ce9e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ParseGlbBoundingBox (cognitive 126): PowerPointHandler.ParseGlbBoundingBox has cognitive complexity 126 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f160fd6d0d2cb632c714b3fe4a6a7d39daf28c3a1c9c132b9fbc8321f10542"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitParagraph (cognitive 126): WordBatchEmitter.EmitParagraph has cognitive complexity 126 (threshold 15). Of this number, 112 points are the body\u0027s own statements and 14 belong to 8 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"73c66da9c53cff6831b3ce5a48e89442d543778759815a7fcee5abf18dd33a49"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetSectionPath (cognitive 126): WordHandler.SetSectionPath has cognitive complexity 126 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f3da5f5ff94374e5ac592fbe2f0dd02a51ea62917c6e3fd086fd66215b41b9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.FindAndReplace (cognitive 123): ExcelHandler.FindAndReplace has cognitive complexity 123 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb9958eab806242cc1852c41211030979f68870acb1ec3e855fbfced1cf565e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.EvaluateCfRule (cognitive 123): ExcelHandler.EvaluateCfRule has cognitive complexity 123 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1690}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22192893417a4cddaf03b16510bf4c37806f03cd769543cde99113fa535555e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsHtmlCore (cognitive 123): WordHandler.ViewAsHtmlCore has cognitive complexity 123 (threshold 15). Of this number, 122 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a40ea8f56639ffa442466a428bd59089359019f8050a9c2fd983d6ea94f20d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderConnector (cognitive 122): PowerPointHandler.RenderConnector has cognitive complexity 122 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1878}}}],"partialFingerprints":{"codehealthFindingId/v1":"851fb7674c95d968bfbf4a0519fc136e9c41ab42c0d5f5466f59ba2cd4b117f5"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderChartSvgContent (cognitive 121): ChartSvgRenderer.RenderChartSvgContent has cognitive complexity 121 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4518}}}],"partialFingerprints":{"codehealthFindingId/v1":"08bd9cb3f9cf515d7ff6504913425a46807b7c1d1b183af27ed53d74ca15d99a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitInlineSectionBreak (cognitive 121): WordBatchEmitter.TryEmitInlineSectionBreak has cognitive complexity 121 (threshold 15). Of this number, 105 points are the body\u0027s own statements and 16 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"e51dc170b9fbf5ac8aa8d3e9645c02e8831558c82726ad4b469fd41e1d02489c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddField (cognitive 118): WordHandler.AddField has cognitive complexity 118 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6549fcad5dfc76e9cc432e95fb91b2c106ab4fd2ce17fca40b9935526e7bdd9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddShape (cognitive 117): ExcelHandler.AddShape has cognitive complexity 117 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"62b4a121049cb5b8de293180c063a7fa1f8424ec313b66b9343e0cb256fe3af9"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddConnector (cognitive 116): PowerPointHandler.AddConnector has cognitive complexity 116 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"17743de1e342100d02a899fe4b7b1e1e6ecaf529f74976f6b4bcfa5776e5ef72"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderTextBodyFO (cognitive 115): PowerPointHandler.RenderTextBodyFO has cognitive complexity 115 (threshold 15). Of this number, 114 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1158}}}],"partialFingerprints":{"codehealthFindingId/v1":"6450695670b792bda5ee40bffc6d87251f31802f2475d671ca2d6dc7280580cf"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ApplySeriesReferences (cognitive 114): ChartHelper.ApplySeriesReferences has cognitive complexity 114 (threshold 15). Of this number, 109 points are the body\u0027s own statements and 5 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"c60844be91ae29977a97b72833ab6ab13c7b596846114fdeab90a3965c0001f7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ApplyNumberFormatCore (cognitive 113): ExcelHandler.ApplyNumberFormatCore has cognitive complexity 113 (threshold 15). Of this number, 110 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3425}}}],"partialFingerprints":{"codehealthFindingId/v1":"f66dc2dc903900cee446e13ae613a9d68dfb7ae49049e0614404db87271ee80a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitTextbox (cognitive 113): WordBatchEmitter.TryEmitTextbox has cognitive complexity 113 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":3530}}}],"partialFingerprints":{"codehealthFindingId/v1":"a588ed2310d1108706adeeeb0740e4e942c628ba0dd92593918c0a7ebd66313f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddComment (cognitive 113): WordHandler.AddComment has cognitive complexity 113 (threshold 15). Of this number, 112 points are the body\u0027s own statements and 1 belongs to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78c18097cba1d4a7204ef278b73cd2f6189754b585a92e5b39272142970a0fc"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CopyFrom (cognitive 113): WordHandler.CopyFrom has cognitive complexity 113 (threshold 15). Of this number, 103 points are the body\u0027s own statements and 10 belong to 6 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":1650}}}],"partialFingerprints":{"codehealthFindingId/v1":"74a756ab82dca1f9177ee9b5280050625045f01c81443f8fbaeb7fe66428e2d6"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.PopulateDocSettings (cognitive 113): WordHandler.PopulateDocSettings has cognitive complexity 113 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.DocSettings.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"595cbffd8b81dc7a58c706b8aa2f0d80a532fc3328517cc8dc14654f95414409"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetHeaderFooter (cognitive 113): WordHandler.SetHeaderFooter has cognitive complexity 113 (threshold 15). Of this number, 111 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"cafb8533bbb9647afe228e3c7f0784d06baaafb76f480e15142edf6422590f87"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.BuildChartSpace (cognitive 112): ChartHelper.BuildChartSpace has cognitive complexity 112 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe34ee87ec084944d11eb51ae1fb5e2345d40fd3193eace39f9e1629f55ceb23"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitNoteReference (cognitive 112): WordBatchEmitter.EmitNoteReference has cognitive complexity 112 (threshold 15). Of this number, 108 points are the body\u0027s own statements and 4 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":2085}}}],"partialFingerprints":{"codehealthFindingId/v1":"22520a71d359d25ab8dde710fce404e8f7a68ade5315f52076fc964247b99de8"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.Move (cognitive 111): PowerPointHandler.Move has cognitive complexity 111 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca0849835bb3c7102bc0625e50a6f0b2b9236aafa5e2964a611d6ec89776c85"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddFormField (cognitive 108): WordHandler.AddFormField has cognitive complexity 108 (threshold 15). Of this number, 106 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":"src/officecli/Handlers/Word/WordHandler.FormFields.cs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f0330ee7e2ffae5998f3cf131bf394a8a6d0a71e7d68e0a79f443bd21b9eea7"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ParseTransitionFromXml (cognitive 107): PowerPointHandler.ParseTransitionFromXml has cognitive complexity 107 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2450}}}],"partialFingerprints":{"codehealthFindingId/v1":"61565a80b46b85ede2ce12e308b287a454ca0158e0e0337d9b7294eeabfeffec"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetMediaByPath (cognitive 107): PowerPointHandler.SetMediaByPath has cognitive complexity 107 (threshold 15). Of this number, 106 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"1441b3a1d599545de8941f1f28e0e70f4c7fd1db7db543493012384c2f6000ba"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildAddCommand (cognitive 106): CommandBuilder.BuildAddCommand has cognitive complexity 106 (threshold 15). Most of this is not in the body itself: 0 of the 106 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 57, 28, 151, \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":"src/officecli/CommandBuilder.Add.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"11d11fe96fe693c153d26b851e63c26870c1f12b35b2f513e7ded1a8ed85f30c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitPictureRun (cognitive 106): WordBatchEmitter.TryEmitPictureRun has cognitive complexity 106 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2665}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b111cf6aa4b5385342170531ada694a6214de5f6c2f96793a773a746e3088da"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderShapeHtml (cognitive 106): WordHandler.RenderShapeHtml has cognitive complexity 106 (threshold 15). Of this number, 103 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a901fa85706ea3b172613855a3c6d6a970e9fe89bff6c6131826ce53be73f5"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderScatterChartSvg (cognitive 104): ChartSvgRenderer.RenderScatterChartSvg has cognitive complexity 104 (threshold 15). Of this number, 103 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2479}}}],"partialFingerprints":{"codehealthFindingId/v1":"137b292c4ffc041608a2381c97efcc813dbd4c1e8b319115d034322454893439"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.PresetGeometryToCss (cognitive 104): PowerPointHandler.PresetGeometryToCss has cognitive complexity 104 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2384}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e1d13dc92e9b91818e0498bdba607ad7c8a5a6a7b97b53d14dff6acd6d16b3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddSdt (cognitive 103): WordHandler.AddSdt has cognitive complexity 103 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2123}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef14ffea764b628689fafe98313a35f621f3d9a7c1702b7ce5272b70d9ed6ae9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TrySetSectionLayout (cognitive 103): WordHandler.TrySetSectionLayout has cognitive complexity 103 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.SectionLayout.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e4b9fafbb92f761225a08b82a6d0b36a4ccaa61b9edf5cdcf5e661049cfc9c8"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderPieChartSvg (cognitive 102): ChartSvgRenderer.RenderPieChartSvg has cognitive complexity 102 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1647}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f21bf023fc07e8863e4b3484e0e229c96cf4bdefb21db3088197373e226b064"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalFunction (cognitive 102): FormulaEvaluator.EvalFunction has cognitive complexity 102 (threshold 15). Of this number, 83 points are the body\u0027s own statements and 19 belong to 8 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45a2c6db53c2c227a639e3e94e213350e7ddc35e405f4536105dc9f5d23341a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetShapeNode (cognitive 101): ExcelHandler.GetShapeNode has cognitive complexity 101 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"2afe126054e0c40328ec156e7f3675f1a4558119e0945b01afb462f973f10d31"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.BuildChartProps (cognitive 101): WordBatchEmitter.BuildChartProps has cognitive complexity 101 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Charts.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac764bec7f48ac3e14a6c1f6e9b67514e51843761cbf69e7a0b8aff11f33647f"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowchartLayout.BkPosition (cognitive 100): FlowchartLayout.BkPosition has cognitive complexity 100 (threshold 15). Of this number, 98 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Diagram/FlowchartLayout.cs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"c947e834676ef5c813c6c0bd3fdc0a45a42fff1e4adc3b1c1219eb8f43ae7714"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.CreatePivotTable (cognitive 100): PivotTableHelper.CreatePivotTable has cognitive complexity 100 (threshold 15). Of this number, 99 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":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"13b1762726b31f0ff9151dfb7d84e359a2fb2adff49526eff10119094c5764b1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetShapeByPath (cognitive 100): ExcelHandler.SetShapeByPath has cognitive complexity 100 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"12c037464cf10e66af6d6cf92f59ef19c8d3b091fb139de2849d0284c1328b18"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetCfByPath (cognitive 100): ExcelHandler.SetCfByPath has cognitive complexity 100 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"076dd1639f37ec2bd0003b6bd33f4d8634984790710ab8916f5d9603a8a39349"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetFieldPath (cognitive 98): WordHandler.SetFieldPath has cognitive complexity 98 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"3035c9836e39f4b0274478cc141e56d0405302605293077aee5855edf8b6f9e5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ProcessFindInPptParagraph (cognitive 96): PowerPointHandler.ProcessFindInPptParagraph has cognitive complexity 96 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"595f40a244b1d908815f8254ca6cd07daa9ed3233ed3c2f457f39fb50aae848d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddParagraph (cognitive 94): PowerPointHandler.AddParagraph has cognitive complexity 94 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"133761559e2efd52261d12f1333ad7cee18be46571f5ece46d1fc8762076f25e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildRowInnerHtml (cognitive 93): ExcelHandler.BuildRowInnerHtml has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fae57c36c028e4a53e792935cdfb93963686db00233cbc9b6e92c77d11e9c1"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CreateImageNode (cognitive 93): WordHandler.CreateImageNode has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.ImageHelpers.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2a23625fcbd104e04c3f912bf59f5ada151d636905a0c37a881abd66f79508"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ElementToNode (cognitive 93): WordHandler.ElementToNode has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6028}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6024ed309b5a111ad2573f0a0a417eb932a57f52d8a59401ba6c6f659829a2a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetOleByPath (cognitive 92): ExcelHandler.SetOleByPath has cognitive complexity 92 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e2c337e04d912029049c8ab66652679da2a5f8482f81cde2b476fe57a50e52f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SortRangeRows (cognitive 92): ExcelHandler.SortRangeRows has cognitive complexity 92 (threshold 15). Of this number, 90 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f101e51cdf5609ddb15eb2294a5521dc88ba8904167467014aef4f7df34b566"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitComments (cognitive 92): WordBatchEmitter.EmitComments has cognitive complexity 92 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb91383bbac6a9e1007adbdcca1ec3b2792b40bb397712be247fd8635eeb672"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderComboChartSvg (cognitive 91): ChartSvgRenderer.RenderComboChartSvg has cognitive complexity 91 (threshold 15). Of this number, 89 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2653}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce3288161b69c5df6ae17711dfaab58784edd6cb4631b1bbcdcaad1923eb996"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyParagraphLevelProperty (cognitive 91): WordHandler.ApplyParagraphLevelProperty has cognitive complexity 91 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cad2156a64a7bbb24b5af56e56158fabfbff54128a7ba315ee92e63f43e94bf"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ParseValueFields (cognitive 90): PivotTableHelper.ParseValueFields has cognitive complexity 90 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Parse.cs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d1394e80393121fc42c151970dadfa85694e9fcfc83961580d23e0bffb2fb44"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitSheet (cognitive 90): ExcelBatchEmitter.EmitSheet has cognitive complexity 90 (threshold 15). Of this number, 88 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"363461dbda4110c1c4da9182c2724eaa6ea5bfe7a52831cf1bb9e2c733396f43"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowchartLayout.Route (cognitive 89): FlowchartLayout.Route has cognitive complexity 89 (threshold 15). Of this number, 84 points are the body\u0027s own statements and 5 belong to 4 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Diagram/FlowchartLayout.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaf2ddb1dfb1856a00872c6b5f2c0ce535db2f28a1a15195253d789bfae11a8e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderShapeSvg (cognitive 88): PowerPointHandler.RenderShapeSvg has cognitive complexity 88 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"62969e1e0c2f1a068785c36032c6bdf700cd1b0b20315257f0dbe11ca0f5ee8e"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildPivotTableDefinition (cognitive 87): PivotTableHelper.BuildPivotTableDefinition has cognitive complexity 87 (threshold 15). Of this number, 86 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e0f322650ad1e2dfdf265421492bb568e046256bb27ce2cbc2fa78bd0bcb32"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddOle (cognitive 87): WordHandler.AddOle has cognitive complexity 87 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"067f013931d4503bfd85696c07e270313742ed47708bc2e1058958ccff3b39c6"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.Set (cognitive 85): ExcelHandler.Set has cognitive complexity 85 (threshold 15). Of this number, 83 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6dd72fcccf27f567ba5c8c22012407e60b6d91279e14c598da6caa7c51e3aed"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitBody (cognitive 85): WordBatchEmitter.EmitBody has cognitive complexity 85 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.cs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"075424b44741a4d07f4c9285174551af609cf4aaddb7a18e469448dc6c3fd7a8"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TrySetWorkbookSetting (cognitive 83): ExcelHandler.TrySetWorkbookSetting has cognitive complexity 83 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5d0cbcb2bde138af2e19a6f7c84fafae3a0b3ccdf4199f065bfd9cbcc50159"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyTableBorderFanOut (cognitive 83): PowerPointHandler.ApplyTableBorderFanOut has cognitive complexity 83 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"429f173d79c1cc3b0a3c8b92debad6ed323ddd4add8f18368ce4480af2c1b83a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderImageHtml (cognitive 82): WordHandler.RenderImageHtml has cognitive complexity 82 (threshold 15). Of this number, 80 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d7abd135dddcf604f0d8de0fa6f9295352e906865822a9d3fc51bef618474e7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetRange (cognitive 81): ExcelHandler.SetRange has cognitive complexity 81 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"49a8d378ba12c794cc44c7272320cafdfa61c0c9f37e82fbf7103a38e5b5d05d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AppendW14CssEffects (cognitive 81): WordHandler.AppendW14CssEffects has cognitive complexity 81 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1959}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9e69a3c8fba0bccc1fcc5fdcd089e266002466bb17fadddacbb07d13dc0697"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsAnnotated (cognitive 81): WordHandler.ViewAsAnnotated has cognitive complexity 81 (threshold 15). Of this number, 80 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"afda4a29a7a230306281413a735081df0e35928728deb3063a5a756620b3ba1a"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildTreeAxisItems (cognitive 80): PivotTableHelper.BuildTreeAxisItems has cognitive complexity 80 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":1063}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cabed780c2ef7fc68b0ddc197e87982e9733b682e6840bad328ea92fb8d5bf8"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RefreshStaleFormulaCaches (cognitive 80): ExcelHandler.RefreshStaleFormulaCaches has cognitive complexity 80 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.FormulaCache.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"f663992022515c07bd3f596c66eb96b51817af3bb4f8c26f4f0a5fb3fe989500"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddRow (cognitive 80): WordHandler.AddRow has cognitive complexity 80 (threshold 15). Of this number, 78 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":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0bf4bdb40e9bccb84636b18be13fa8302d353cf5874ae91dfe885453ae9d90"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ReadW14TextEffects (cognitive 80): WordHandler.ReadW14TextEffects has cognitive complexity 80 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.TextEffect.cs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f91c463867ca45d2e6668871bd22734b7f34ad27e459268a36033230a507bf"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ApplyChartPositionSet (cognitive 79): ExcelHandler.ApplyChartPositionSet has cognitive complexity 79 (threshold 15). Of this number, 78 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"084c51331506e2db5761cbedc9bf2d225a0a1b6ee116a8aa98ca41752d2ab6ac"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildConditionalFormatMap (cognitive 79): ExcelHandler.BuildConditionalFormatMap has cognitive complexity 79 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"426af2c5488f95eaf1424ba2d93361c4895bf89ec0a640b274b5036be267f5e5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementTableRow (cognitive 79): WordHandler.SetElementTableRow has cognitive complexity 79 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":2455}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdb4fa79572c441326dbadece1dd6c7b693990785dcfc7c571bad60cc93f3fb"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsTextJson (cognitive 79): WordHandler.ViewAsTextJson has cognitive complexity 79 (threshold 15). Of this number, 78 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"22b53b091225c7d79571e1a39769c75448b425c883ae34840578acadc9015440"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildMultiColItems (cognitive 78): PivotTableHelper.BuildMultiColItems has cognitive complexity 78 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"62072ffd69c8bbf7dfbab79ccb3791f52081e048c5c9d16bfd29dcaa1b77c0f5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddPlaceholder (cognitive 78): PowerPointHandler.AddPlaceholder has cognitive complexity 78 (threshold 15). Of this number, 75 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"93883828c2c7117d2c971e3c2e737a1de9452f874fa98197347462068e717c6b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyShapeAnimation (cognitive 78): PowerPointHandler.ApplyShapeAnimation has cognitive complexity 78 (threshold 15). Of this number, 77 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"736bd66dd8eac10813998781bc36078540a58d9155784aacb235126f498a0878"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadBackground (cognitive 78): PowerPointHandler.ReadBackground has cognitive complexity 78 (threshold 15). Of this number, 70 points are the body\u0027s own statements and 8 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63666cbf097c697be86d7c2abda399eb50d326353786d26eecae11dc945238d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddBookmark (cognitive 78): WordHandler.AddBookmark has cognitive complexity 78 (threshold 15). Of this number, 75 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae627abe6464953f11c29311b67757e199b1597cb89a4986906460c72d953286"}},{"ruleId":"D2","level":"warning","message":{"text":"applyMarks (cognitive 77): applyMarks has cognitive complexity 77 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de7051931320eca67c831d637493213fea0eebf09fc151ba18cbaef448ab09d"}},{"ruleId":"D2","level":"warning","message":{"text":"CompoundFile.ReadStream (cognitive 76): CompoundFile.ReadStream has cognitive complexity 76 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/CompoundFile.cs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb42104b39b475e378459a3dd926cbc092411774433993b8bffe242a28ce9e12"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddAutoFilter (cognitive 76): ExcelHandler.AddAutoFilter has cognitive complexity 76 (threshold 15). Of this number, 75 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"105f887b47e44a764e184d7904b97aca92174200a14c156bea11de3ebf5416a3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.PopulateAutoFilterCriteria (cognitive 76): ExcelHandler.PopulateAutoFilterCriteria has cognitive complexity 76 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":971}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8763125b07738a1814e3e38768b5fa2a02d804c53e50cf0551a62cf10d4738d"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitTable (cognitive 76): PptxBatchEmitter.EmitTable has cognitive complexity 76 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Table.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8894e7f0e54c76a30abab8a8e51b5a74d916f06295eef842f7012ea6ccfa2ae8"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpLoader.ValidateProperties (cognitive 76): SchemaHelpLoader.ValidateProperties has cognitive complexity 76 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpLoader.cs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c57153eadb2d385d47448770772ac6c3b277a450da6cdd3e7af598a065a395"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.ExtractCxChartInfo (cognitive 75): ChartSvgRenderer.ExtractCxChartInfo has cognitive complexity 75 (threshold 15). Of this number, 73 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.CxExtract.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"74168869957843378c944c0b5c41e505da8008344cdaa9b54fe222473d3401e0"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowchartLayout.Layout (cognitive 75): FlowchartLayout.Layout has cognitive complexity 75 (threshold 15). Of this number, 72 points are the body\u0027s own statements and 3 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Diagram/FlowchartLayout.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"60bdbcc9a648c68dc382907d4f0c8dd423865ac4227e63472045dbd54589f7c9"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseMatrix (cognitive 75): FormulaParser.ParseMatrix has cognitive complexity 75 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":2369}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b79b42b7b98ee3f557c6cdaa1339ccf889f0d3e135ec378631207287e1e30d1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.QueryRowsByColumnPredicate (cognitive 75): ExcelHandler.QueryRowsByColumnPredicate has cognitive complexity 75 (threshold 15). Of this number, 74 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.RowWhere.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d884db06ad10b4344daead6fa1f0d9b72d0bce230ac9248b1fbfd0293eb6eb"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddTable (cognitive 75): PowerPointHandler.AddTable has cognitive complexity 75 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a7f92f629bd7d7d2d26a4525096a5272e2109071184fb6b62238030b7b39c1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadShapeAnimation (cognitive 74): PowerPointHandler.ReadShapeAnimation has cognitive complexity 74 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2229}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7da042699b2d5c4be4395cc3f71d35bbe4a9851005a40aa409aeae006cc6150"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddHyperlink (cognitive 74): WordHandler.AddHyperlink has cognitive complexity 74 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"91bd518d36af260f8edd0a44e838c49138624c69b05527301e5f471625e4c038"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderRadarChartSvg (cognitive 73): ChartSvgRenderer.RenderRadarChartSvg has cognitive complexity 73 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2234}}}],"partialFingerprints":{"codehealthFindingId/v1":"16bef0d0ecefe10ac1d77db1b27e3cdef924be64b6790eb374742bd32452e8b3"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolvePptParagraphsForFindInternal (cognitive 73): PowerPointHandler.ResolvePptParagraphsForFindInternal has cognitive complexity 73 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d87766ba759b9b8d5054cefd381a87b5726df197904dc732591256aa40d98f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderTextBodySvg (cognitive 73): PowerPointHandler.RenderTextBodySvg has cognitive complexity 73 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"0be0a245da5e57e8c8d270c4add766aec8a4ad827260498c98d63e61895f6e95"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.ScanSlideExoticContent (cognitive 73): PptxBatchEmitter.ScanSlideExoticContent has cognitive complexity 73 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb8312096621eff4c33293df890f10a4081f8f2b21a01db6fce6a890bb4a2c12"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.PopulateAnimationNode (cognitive 72): PowerPointHandler.PopulateAnimationNode has cognitive complexity 72 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":2448}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3929e944b671654c527a1eb7ae0737f0cffccc015443c0bb4c085a650b0454d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddGroup (cognitive 71): PowerPointHandler.AddGroup has cognitive complexity 71 (threshold 15). Of this number, 68 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ad35d30331c9b54dce4844f245d4632610468654bb267f30d8747085b84a5f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ConvertOmmlNode (cognitive 71): PowerPointHandler.ConvertOmmlNode has cognitive complexity 71 (threshold 15). Of this number, 69 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1919}}}],"partialFingerprints":{"codehealthFindingId/v1":"4136c458207d4ac92f94e205ad3b4449d4c0856f0ade5a950d210e2187da49cc"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.Move (cognitive 71): WordHandler.Move has cognitive complexity 71 (threshold 15). Of this number, 66 points are the body\u0027s own statements and 5 belong to 4 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"282e564a99dd59dbd5429eedbd889c05ef0d6effd3c6bc140a68dc4f84149bca"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CustomGeometryToClipPath (cognitive 69): PowerPointHandler.CustomGeometryToClipPath has cognitive complexity 69 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"be434e484eb143d6658c797cf520342e7032eadaa93b0ad49195e913787d9988"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddLvl (cognitive 69): WordHandler.AddLvl has cognitive complexity 69 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2425}}}],"partialFingerprints":{"codehealthFindingId/v1":"42d6fcf581e8b88ad941f9f7e8541a17b287972489c40b9c6ed443ac0b430320"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CollectFormFieldEntries (cognitive 69): WordHandler.CollectFormFieldEntries has cognitive complexity 69 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"7031e8136921b947ecc116ad539c63273fc3f3c10357f635b0a93d3152b59c89"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildMarkCommand (cognitive 68): CommandBuilder.BuildMarkCommand has cognitive complexity 68 (threshold 15). Most of this is not in the body itself: 0 of the 68 points are its own statements and the rest belongs to one function literal inside it that branches (line 38). 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":"src/officecli/CommandBuilder.Mark.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62525277212f1020300ba0ec2b85fc19389e251a4e983bea566b8989c4990f3"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ConnectorToNode (cognitive 68): PowerPointHandler.ConnectorToNode has cognitive complexity 68 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3136}}}],"partialFingerprints":{"codehealthFindingId/v1":"835a4eee0d72023b233b6afb9a1c449ed5ded871618062ddffb33dcb537c333e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsText (cognitive 68): WordHandler.ViewAsText has cognitive complexity 68 (threshold 15). Of this number, 67 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"534f977a8d98572d4ff83027eac7b709f2010d17e1d71645aa301fe8edc8cdff"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderLegendHtml (cognitive 66): ChartSvgRenderer.RenderLegendHtml has cognitive complexity 66 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4795}}}],"partialFingerprints":{"codehealthFindingId/v1":"c82d01dfc395cf9f9b5c1f790afc584a2a133ef6dba48175fad689bfcd4db8c8"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.MatchesGenericAttributes (cognitive 66): PowerPointHandler.MatchesGenericAttributes has cognitive complexity 66 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"51839db9e3ad9393692804928db37afeced37810e35e1f347f6098fc36523978"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderBubbleChartSvg (cognitive 65): ChartSvgRenderer.RenderBubbleChartSvg has cognitive complexity 65 (threshold 15). Of this number, 64 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2336}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d32c2133168577d1407c508f170e017f136217eb55b641565512ec6af8b2d8b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetShapeAnimationByPath (cognitive 65): PowerPointHandler.SetShapeAnimationByPath has cognitive complexity 65 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":1950}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d7bbc84bc1f84a8a300a7019e6e50660de017612fdb903fbbd86dde4dad986e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetFormField (cognitive 65): WordHandler.SetFormField has cognitive complexity 65 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.FormFields.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"e51d486b526225bad3acd0a9ff7621e88740542abbfa988c6664029f036d059e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RenderExcelChart (cognitive 64): ExcelHandler.RenderExcelChart has cognitive complexity 64 (threshold 15). Of this number, 62 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"052816ba2fbe7e80785e4cd102467e4f9169137a2918fa3ae882ac314cc6716c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateNumFmt (cognitive 63): ExcelStyleManager.GetOrCreateNumFmt has cognitive complexity 63 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d66a51610c7359b667e52c1f59ee2da89931af7f03b97684fc1797148a98c68"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildDataBarMap (cognitive 63): ExcelHandler.BuildDataBarMap has cognitive complexity 63 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1358}}}],"partialFingerprints":{"codehealthFindingId/v1":"da46d1c2bd56343a96af35c2572f5777246488a8843176047e4ab37f0b76a9e3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ApplyNumberFormat (cognitive 63): ExcelHandler.ApplyNumberFormat has cognitive complexity 63 (threshold 15). Of this number, 61 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3218}}}],"partialFingerprints":{"codehealthFindingId/v1":"05a0daf8c8e796718d96fe8fe95ffcb89f37fe3a3706731ab4f6f4cb67d9601d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.Import (cognitive 63): ExcelHandler.Import has cognitive complexity 63 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Import.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"d764dd704dc23c6139b3ecf418ab55680a19d0c2b4e56420566f14d5e90057e2"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CollectInlinedPartsEmitData (cognitive 63): WordHandler.CollectInlinedPartsEmitData has cognitive complexity 63 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae21bf4a48ec01cf4be4876a2017000ee5e79894ba28d3eec333a25790cba62"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetShapeFillCss (cognitive 62): PowerPointHandler.GetShapeFillCss has cognitive complexity 62 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"c332f3d070f88e4f99dc56e2be1ca783c005795317326c9f5c16f4704ad8bcee"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CheckTextOverflow (cognitive 62): PowerPointHandler.CheckTextOverflow has cognitive complexity 62 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":3896}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7957e1d7972318734c9e650ad7fa603132559e45225705a476334ad176b17ca"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildAbstractNumElement (cognitive 62): WordHandler.BuildAbstractNumElement has cognitive complexity 62 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2238}}}],"partialFingerprints":{"codehealthFindingId/v1":"b324dd587b89b52372fa52fe67d4e041a402bea5b191c3421638757a6e3e8c8a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MatchesRunSelector (cognitive 62): WordHandler.MatchesRunSelector has cognitive complexity 62 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Selector.cs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfc9adb126589476d53ab6fdd073901b94bff8355afcd1e2798a4b7ad467d2f"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.RunHelp (cognitive 61): CommandBuilder.RunHelp has cognitive complexity 61 (threshold 15). Of this number, 60 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Help.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f25498acbd4f034514f0ac8a5e0e1898384b7a80a789ae023327384d19c5b1"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderMultiRingDoughnut (cognitive 61): ChartSvgRenderer.RenderMultiRingDoughnut has cognitive complexity 61 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1797}}}],"partialFingerprints":{"codehealthFindingId/v1":"c079f928f9f96a2629a36932f763e0d1bf9d5c049f6cdd790842adbcbb6266f4"}},{"ruleId":"D2","level":"warning","message":{"text":"ModernFunctionQualifier.AutoQuoteSheetRefs (cognitive 61): ModernFunctionQualifier.AutoQuoteSheetRefs has cognitive complexity 61 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1dd39f49a3c9143b5698e2a35e1983a1d5aa37d96460c786505d56f17d8dd2a"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitGenericAlternateContentForSlide (cognitive 61): PptxBatchEmitter.EmitGenericAlternateContentForSlide has cognitive complexity 61 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Media.cs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"9941c9cdc940ae2c644ea41bd56d90aac8125032c759d919ddeb3434b32d0945"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 61): (anonymous) has cognitive complexity 61 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"9141bbe2a54557175e453539c52ddf0c69fa6d43afe311645e406ef5dc55e87f"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RefreshPivotCacheFromSource (cognitive 60): PivotTableHelper.RefreshPivotCacheFromSource has cognitive complexity 60 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Readback.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c93b8f47602bb91dbdab3192cf16f429018d3e1e052386249ef8559b8b512bd"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitParagraph (cognitive 60): PptxBatchEmitter.EmitParagraph has cognitive complexity 60 (threshold 15). Of this number, 57 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4121c0a2d54fb11bda45ffa1b2dfea8b9f0afdf7412426efacddf7f1735a75c"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderArea3DSvg (cognitive 59): ChartSvgRenderer.RenderArea3DSvg has cognitive complexity 59 (threshold 15). Of this number, 56 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5354}}}],"partialFingerprints":{"codehealthFindingId/v1":"54fdab64b013c6131e322893fa64a9bccc3a1809ecdd0346caf8601351e6c30b"}},{"ruleId":"D2","level":"warning","message":{"text":"OutputFormatter.EnrichFromMessage (cognitive 59): OutputFormatter.EnrichFromMessage has cognitive complexity 59 (threshold 15). 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":"src/officecli/Core/OutputFormatter.cs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ea08c5fa76991af315201bac52ef54673cd44303c4e761b5457c076b9a48ae1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildIconSetMap (cognitive 59): ExcelHandler.BuildIconSetMap has cognitive complexity 59 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1466}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e799b7065b25b6187e37aefe397d7798e117e11a7673baa028792697dcf8aa0"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.Swap (cognitive 59): PowerPointHandler.Swap has cognitive complexity 59 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"be54538a4c6ed5c3d6d421fa590e80707397e58ea2b4d1b647b6214225f5b4dc"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetModel3DByPath (cognitive 59): PowerPointHandler.SetModel3DByPath has cognitive complexity 59 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"36bd12c2b9587f43c9660b54697d098eea0c41164029e642e2ef1fcfeed26585"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetZoomByPath (cognitive 58): PowerPointHandler.SetZoomByPath has cognitive complexity 58 (threshold 15). Of this number, 57 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9480b3c23b23806d2aa13042f0856e2934c5a9732cf32511e16a57a293e431c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitSdt (cognitive 58): WordBatchEmitter.EmitSdt has cognitive complexity 58 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":2629}}}],"partialFingerprints":{"codehealthFindingId/v1":"15163277985c5e4fa13f2222aab4c5877f518fec3a45a33d96be83e8d99fc3ad"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ApplyShowDataAs1x1 (cognitive 57): PivotTableHelper.ApplyShowDataAs1x1 has cognitive complexity 57 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Parse.cs"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd91c9a8dd8cd1259323ded42e9287409f3c3be14bbe5241c71abd109fe13133"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddChart (cognitive 57): ExcelHandler.AddChart has cognitive complexity 57 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Chart.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"0028481ebc96f127f89074b664f7531930536e02749b6037407beb9a10bb186d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddValidation (cognitive 57): ExcelHandler.AddValidation has cognitive complexity 57 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed99f9a27a1cf9f2e6a6eeb020d52026b5a78bab8b89c7f3006e5a942348b13b"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.NormalizeSlideRawSlice (cognitive 57): PptxBatchEmitter.NormalizeSlideRawSlice has cognitive complexity 57 (threshold 15). Of this number, 52 points are the body\u0027s own statements and 5 belong to 5 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":1414}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3a5b9618a29d81547a0bd4dd8918f2ec696de85917bf1b1d8b9b1aaace209b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RawSet (cognitive 56): PowerPointHandler.RawSet has cognitive complexity 56 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"457fe8e696d3ec27c6ad92de3f42f8b3700de859315da238e9b044be09bfd990"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildSectionHfBundles (cognitive 56): WordHandler.BuildSectionHfBundles has cognitive complexity 56 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":3395}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9bcffd9b426614f175bd2ea5fac2055e52e8905e53810352de68abee5ce80f7"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TryGetParagraphTextWithFieldSentinels (cognitive 56): WordHandler.TryGetParagraphTextWithFieldSentinels has cognitive complexity 56 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"33c63451127942625343723ee4e3300bf40ae27149ca89baae387737c789b9a3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RawSet (cognitive 56): WordHandler.RawSet has cognitive complexity 56 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":1550}}}],"partialFingerprints":{"codehealthFindingId/v1":"80baab189312242a28e2f075b7765e603a06760de1885582815370cb43e9b12d"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.BuildAxisNode (cognitive 55): ChartHelper.BuildAxisNode has cognitive complexity 55 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Axis.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70638f64f798c95046138835805599e7ab39c2b2188dc297d1f1828ef10e4c4"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateFont (cognitive 55): ExcelStyleManager.GetOrCreateFont has cognitive complexity 55 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ed79d0aafa4e186e9da9ab94025a64a5c18eccab9dfc94d02ff9c5198f7905d"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalXlookup (cognitive 55): FormulaEvaluator.EvalXlookup has cognitive complexity 55 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccdb6e595e61f1f421ffd826a0b260bda18f12864d20f46d722959ca02200ee9"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddChart (cognitive 55): PowerPointHandler.AddChart has cognitive complexity 55 (threshold 15). Of this number, 53 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d77c413acf1b0b495ee3e2e30704f2d057f8a2188d6183c7dce5bd7a4968b87"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadTransitionDirection (cognitive 55): PowerPointHandler.ReadTransitionDirection has cognitive complexity 55 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2742}}}],"partialFingerprints":{"codehealthFindingId/v1":"4977c349b5cd71c16926e224c2fe9286cefa2d60218943acd299231494e8f7a2"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EnsureAllParaIds (cognitive 55): WordHandler.EnsureAllParaIds has cognitive complexity 55 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"1010292f7f2819caaed3231dc1d0ce05de8d7ba45f0181149b6e4759db15e4bd"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveParagraphsForFind (cognitive 55): WordHandler.ResolveParagraphsForFind has cognitive complexity 55 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ad954618b73c8f9222613cc46f72829b2393b5828eaac7cb2ae7ae1e988126f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CollectParaRunInHeaderFooter (cognitive 55): WordHandler.CollectParaRunInHeaderFooter has cognitive complexity 55 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":3242}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d97ae316f44894e5542ea30b91a65db7e41aaba5b90b00cdb250db690a6b2f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetDumpColumnNodes (cognitive 54): ExcelHandler.GetDumpColumnNodes has cognitive complexity 54 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7e88cd9fc5fc26d50e79d32631458a0f81f524bc1002349e636e4dd6de3aa8"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveIdPath (cognitive 54): PowerPointHandler.ResolveIdPath has cognitive complexity 54 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"a850ac5eaa1a9e1ed140e57b0f117d22a7dc9684a3156ebeec2660920a06c746"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetOleEmitData (cognitive 54): WordHandler.GetOleEmitData has cognitive complexity 54 (threshold 15). Of this number, 53 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"594d0987181f9cfbf69315e83387f192abd14e217ef52a7f62c43dcbcf3f041e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddNamedRange (cognitive 53): ExcelHandler.AddNamedRange has cognitive complexity 53 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd81b27fb2a1a8adb6e5c6b104c3bd75381e2dc381238e84e4ddc356a9b13512"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetMasterOrLayoutBackgroundByPath (cognitive 53): PowerPointHandler.SetMasterOrLayoutBackgroundByPath has cognitive complexity 53 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Slide.cs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c81375010d7a5428a5ba6623fc7874dbf88bf4d5be160db035b1284be1eb68"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetTableRowByPath (cognitive 53): PowerPointHandler.SetTableRowByPath has cognitive complexity 53 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Table.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b586dbce09aa0f4f3d8b8cb0beea998a6669d3a51909edd7881cc247b6a7ee"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveShapeFillCss (cognitive 53): WordHandler.ResolveShapeFillCss has cognitive complexity 53 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"66eb103e9e635eddb2723d776fc38c307e55766c2e9c016e0b6fcbee7812bdc0"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.AppendTrendline (cognitive 52): ChartSvgRenderer.AppendTrendline has cognitive complexity 52 (threshold 15). Of this number, 49 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1099}}}],"partialFingerprints":{"codehealthFindingId/v1":"527f9c2ea7d6ced0264e416a75484813008e24984e0ae1e6e16170963cb1dfba"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildAxisItems (cognitive 52): PivotTableHelper.BuildAxisItems has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"d56e4ebffaa5fccf8c64111409ddb7f42fad3a732b35fee4b3cd78edab956ef3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitPivotTables (cognitive 52): ExcelBatchEmitter.EmitPivotTables has cognitive complexity 52 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d99e55c849c648ced92aeed78dcf83c959aa1b9437221b53c5b3b8d77808b9f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddDataBar (cognitive 52): ExcelHandler.AddDataBar has cognitive complexity 52 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"e43ee310207574e2832ab2afd7908b5bc3c915b43dd6ad873712cf3fccf41942"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddPicture (cognitive 52): ExcelHandler.AddPicture has cognitive complexity 52 (threshold 15). Of this number, 50 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"66d8ccad6754d982a6542f2c6a09626d17c3dd3f348754e1a106c5c59e87f2ee"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.DetectTables (cognitive 52): ExcelHandler.DetectTables has cognitive complexity 52 (threshold 15). Of this number, 51 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":2037}}}],"partialFingerprints":{"codehealthFindingId/v1":"4901882e120a4b5430790b79573fa7e4d8785f645fde003d10c94348d0617709"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetSparklineByPath (cognitive 52): ExcelHandler.SetSparklineByPath has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc719e697497d7243f5fda81dc062597bbdbab719a2950341713439c279c791"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GradientToCss (cognitive 52): PowerPointHandler.GradientToCss has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f9a5f361d2a6169243f0f6c62ef3f40e1fa30b79a0d0c77fe0f2296412c9a2b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetGroupByPath (cognitive 52): PowerPointHandler.SetGroupByPath has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"32fc431e027257bb8ff775839f690e548caa7370c10a1aa8db79843972678347"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveEffectiveDefRpCore (cognitive 52): PowerPointHandler.ResolveEffectiveDefRpCore has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.StyleList.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"62463b6200586677671fd0e9c74ed90214a828c90d29cccb0be1120ba16afda9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ReadRowProps (cognitive 52): WordHandler.ReadRowProps has cognitive complexity 52 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6196}}}],"partialFingerprints":{"codehealthFindingId/v1":"070a333738b9b4ac283504f6e2f8e60de325f88b84e45e891f233d5d18d3580d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ParseDataRangeForChart (cognitive 51): ExcelHandler.ParseDataRangeForChart has cognitive complexity 51 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb97a37e86393d8b08f1f6d8be7c8ddbeadda4128231f50817b077c5b8af44a8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderOlePreviewHtml (cognitive 51): WordHandler.RenderOlePreviewHtml has cognitive complexity 51 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"95dd11a1e9bdc3a2d269b74ff1dc125877c61e8d0e11b0508a1c3b67714f76b1"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveEffectiveRunPropertiesCore (cognitive 51): WordHandler.ResolveEffectiveRunPropertiesCore has cognitive complexity 51 (threshold 15). Of this number, 50 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"beff6ac78d42ff8b8eee6aef8b8ba01744bed8b4d6981a6554a8ba386fe7dcac"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MergeRunProperties (cognitive 51): WordHandler.MergeRunProperties has cognitive complexity 51 (threshold 15). Of this number, 50 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b1b4328cdd9eea5f795a940e09a86a34b66f0ffd9bc36afe7dc7ac64fa4060"}},{"ruleId":"D2","level":"warning","message":{"text":"ModernFunctionQualifier.CollectLambdaParams (cognitive 50): ModernFunctionQualifier.CollectLambdaParams has cognitive complexity 50 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"348a20ea5fcc34cd982e32550c566ff3f750f583019e019ff327511e40bd6409"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetCellStyleCss (cognitive 50): ExcelHandler.GetCellStyleCss has cognitive complexity 50 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2184}}}],"partialFingerprints":{"codehealthFindingId/v1":"abda2259340421febfe371382feeff37cd5cb57bdd820801c5e054319501e83f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetMediaOnSlide (cognitive 50): PowerPointHandler.GetMediaOnSlide has cognitive complexity 50 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3576}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa65df01d808e1542db9db880f9707368e42f4ac475563d0916bca9bfd678e5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveIndentationFromStyle (cognitive 50): WordHandler.ResolveIndentationFromStyle has cognitive complexity 50 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"424914f46b7b45a98b3ed62bfdd8c6917512a41069e2c8b3cf668420978f7c8b"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildPluginsLintCommand (cognitive 49): CommandBuilder.BuildPluginsLintCommand has cognitive complexity 49 (threshold 15). Most of this is not in the body itself: 0 of the 49 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":"src/officecli/CommandBuilder.Plugins.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b7519e7d6bf46144c5d20d92390855bcbd7d04cd5ca8860540c5953bac6c31d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetDumpRowNodes (cognitive 49): ExcelHandler.GetDumpRowNodes has cognitive complexity 49 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"87069de8c5b03b9feefe8a906852155265b0a832e66474f39d1ddf536c4600af"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ParseSrcRect (cognitive 49): ExcelHandler.ParseSrcRect has cognitive complexity 49 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa06072752947f3eed64994fbf036116ba43079ac931142fe0885e1b9bb0162"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetOleByPath (cognitive 49): PowerPointHandler.SetOleByPath has cognitive complexity 49 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"67ffce3290faeb46cfd1559a003c1ed1c4fb3a35cc54b6d26bb356fec12af0fe"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitSlide (cognitive 49): PptxBatchEmitter.EmitSlide has cognitive complexity 49 (threshold 15). 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"a30327eca3a0e3463c2f13da62cd288fde7cbd0bea26619dd4c78bc482b24cc3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddFooter (cognitive 49): WordHandler.AddFooter has cognitive complexity 49 (threshold 15). Of this number, 48 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2864}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e70b019f7b39da09748f3f6b3efdbe53ed6287aa915b67bc508e75f18d3becd"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.DetectChartType (cognitive 48): ChartHelper.DetectChartType has cognitive complexity 48 (threshold 15). Of this number, 46 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":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1694}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b3d91e2ae31070774bf7bb7a58237f51854469c9e710582d620b2001316bfc"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericXmlQuery.TryCreateTypedElement (cognitive 48): GenericXmlQuery.TryCreateTypedElement has cognitive complexity 48 (threshold 15). Of this number, 47 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/GenericXmlQuery.cs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"69fdbf9eeac441a3f376b2d8623e075fe5ca67dbbb1060cdefba85ca2342c38e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderChart (cognitive 48): PowerPointHandler.RenderChart has cognitive complexity 48 (threshold 15). Of this number, 46 points are the body\u0027s own statements and 2 belong to 2 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Charts.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe313347023c5568aef5371102a70bc6590251812479d6fde9aff62450452645"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CopyRelationships (cognitive 48): PowerPointHandler.CopyRelationships has cognitive complexity 48 (threshold 15). Of this number, 47 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ab028f4a3f2b75b58825cc8a871af36315ffe8e9549105da9abf565363c8471"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitStyles (cognitive 48): WordBatchEmitter.EmitStyles has cognitive complexity 48 (threshold 15). Of this number, 47 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3434}}}],"partialFingerprints":{"codehealthFindingId/v1":"5620b028b940c3128b2e917c6b9eab9382e798a3c9a3364721fc439927477f29"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ApplyCalculatedFields (cognitive 47): PivotTableHelper.ApplyCalculatedFields has cognitive complexity 47 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":1495}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2af7f4b412af728cce4c8ff3d5af59be59d34acc755f9ac6c37707a74c6d103"}},{"ruleId":"D2","level":"warning","message":{"text":"RawXmlHelper.ExecuteOnXmlString (cognitive 47): RawXmlHelper.ExecuteOnXmlString has cognitive complexity 47 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bdcd50328b4a36ee9169be93f7fa7ad49b0e721ad0ec80e9356cb1eda8db379"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetPictureNode (cognitive 47): ExcelHandler.GetPictureNode has cognitive complexity 47 (threshold 15). Of this number, 45 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3835ed5601f2c6c2e5c4072f5577a2467c0b07fcbd5abd0a187a488d908318a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.FindFormFieldsInParagraph (cognitive 47): WordHandler.FindFormFieldsInParagraph has cognitive complexity 47 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"8effe5fb447eb6bef38c8f1534fe7219d2a414d90fb796893579534e655b206b"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildDumpCommand (cognitive 46): CommandBuilder.BuildDumpCommand has cognitive complexity 46 (threshold 15). Most of this is not in the body itself: 0 of the 46 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 39, 72). 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":"src/officecli/CommandBuilder.Dump.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5ef741833037aecaf6acdac2b169cd56689993ee6bc770843d15669942bc3f8"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartExBuilder.BuildExtendedChartSpace (cognitive 46): ChartExBuilder.BuildExtendedChartSpace has cognitive complexity 46 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99a3a8b90b35f07f85938a43d0e354c2dda5b1e92cf4d3e881732093705a0b8"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.RefreshPivotCellsForView (cognitive 46): PivotTableHelper.RefreshPivotCellsForView has cognitive complexity 46 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":2092}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f02b6ac35d59cd10191b5a0a4378813bd42615766a01c1536255699faabaf1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RefreshStaleChartCaches (cognitive 46): ExcelHandler.RefreshStaleChartCaches has cognitive complexity 46 (threshold 15). Of this number, 45 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.ChartCache.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a8e5e2b61d05b627bb984db4b5d0707dfff553177f073c73d3eb231b98c818"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetOlesOnSlide (cognitive 46): PowerPointHandler.GetOlesOnSlide has cognitive complexity 46 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3999}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d0c9e16d5fba6534cd8b5b77912878b3142514027dc0a7047cf6e0ede2bd495"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddHeader (cognitive 46): WordHandler.AddHeader has cognitive complexity 46 (threshold 15). Of this number, 45 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2664}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e2d45c33b6436a719ef4f0d45cfb40f104b7aa8b4fc212869f9b2c63f03b46"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetGroupProps (cognitive 46): WordHandler.SetGroupProps has cognitive complexity 46 (threshold 15). Of this number, 42 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":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":3363}}}],"partialFingerprints":{"codehealthFindingId/v1":"7466c96ccdac931b9b4a78c8d3be0bee06f0f6b9f7824607478cf3bdd1cc4fc5"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderPie3DSvg (cognitive 45): ChartSvgRenderer.RenderPie3DSvg has cognitive complexity 45 (threshold 15). Of this number, 44 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5190}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22a6509ffd242f6a9b8b9abc8fa2c19558ffe8450e23c3d592a0575c49ea3be"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ComputePivotGeometry (cognitive 45): PivotTableHelper.ComputePivotGeometry has cognitive complexity 45 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1681}}}],"partialFingerprints":{"codehealthFindingId/v1":"9402a98e7ba634d77f8d09466214343ec075de8175658c5e0549c8c118882c5d"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.HandlePostSwitchAsync (cognitive 45): WatchServer.HandlePostSwitchAsync has cognitive complexity 45 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2583}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb3d5a2033f80e73937ed7cde935a4659acae058ad0f7bf76d2a7a6feaf530d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitCharts (cognitive 45): ExcelBatchEmitter.EmitCharts has cognitive complexity 45 (threshold 15). Of this number, 40 points are the body\u0027s own statements and 5 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec7b609fa089b4233ca222a6061803c530ca0b5ad391a5353376b3af44fcad9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetSheetChildNodes (cognitive 45): ExcelHandler.GetSheetChildNodes has cognitive complexity 45 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5efcffa9024bf2a7bfa66fd3f900ef1eafa12b9282fdf26badc417c955671d9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetFormattedCellValue (cognitive 45): ExcelHandler.GetFormattedCellValue has cognitive complexity 45 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2714}}}],"partialFingerprints":{"codehealthFindingId/v1":"54aca0cfc9e0b02e333787b7554bd6b185746dac4d385ff0f972035bd01d1280"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetNamedRangeByPath (cognitive 45): ExcelHandler.SetNamedRangeByPath has cognitive complexity 45 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6453dd3793335299399236f6347d0e129257cd15c98a1343723b517f98252f0"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ViewAsStats (cognitive 45): PowerPointHandler.ViewAsStats has cognitive complexity 45 (threshold 15). Of this number, 44 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d464f1f7aa7247faab219e4e4bf73ede82ea4c63e9314748a3f9f841b951d85"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ValidateParentChild (cognitive 45): WordHandler.ValidateParentChild has cognitive complexity 45 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a3c996355f96aa388253e39319fa3e1cf2a506ecebf12c6685541a64b1edf0"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetDocumentProperties (cognitive 45): WordHandler.SetDocumentProperties has cognitive complexity 45 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"7af12281295a1f5ed3fd83d527708e165f9ca7c8b5055b9467553c2aebb033ee"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveAnchorPosition (cognitive 45): WordHandler.ResolveAnchorPosition has cognitive complexity 45 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"1477f98b8ab20a04f0df63eb1168c8ee8a8f1e0fbfc9c1001551bbda73811369"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetShapeProps (cognitive 45): WordHandler.SetShapeProps has cognitive complexity 45 (threshold 15). Of this number, 40 points are the body\u0027s own statements and 5 belong to 5 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":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":3216}}}],"partialFingerprints":{"codehealthFindingId/v1":"717cb81e87785096eb68c515780d531f113707ab642d695604fa7f10aaa5dd53"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.ExecuteSet (cognitive 45): ResidentServer.ExecuteSet has cognitive complexity 45 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2099}}}],"partialFingerprints":{"codehealthFindingId/v1":"72f31541ceb244c878fbb08846b8ecc3fb80910bb0e0833f82fdfe8a259a7707"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.BuildBubbleChart (cognitive 44): ChartHelper.BuildBubbleChart has cognitive complexity 44 (threshold 15). Of this number, 42 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bd042b4af3b472a9ea81013d8a3148f2dd27c902bd670a17bcc6ef57db70df"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderStockChartSvg (cognitive 44): ChartSvgRenderer.RenderStockChartSvg has cognitive complexity 44 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2911}}}],"partialFingerprints":{"codehealthFindingId/v1":"174754bcb1a6f023b65a36759933f6f66cb5b993371ffe2c9f6ae0a5b6166c8c"}},{"ruleId":"D2","level":"warning","message":{"text":"ModernFunctionQualifier.Qualify (cognitive 44): ModernFunctionQualifier.Qualify has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"6247d408e54dbd93a2c1c27927d2dfd6ec2b536c136e391809222e4e440486d7"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddLineBreak (cognitive 44): PowerPointHandler.AddLineBreak has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d1228617246be07c7bc52e183867a02354185dfb7b44696ac9e74a0629420b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveAnchorPosition (cognitive 44): PowerPointHandler.ResolveAnchorPosition has cognitive 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdde97db95320321538667640b1d30e0f26a87b9da8237798838b27eef3bf3b8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitOleRun (cognitive 44): WordBatchEmitter.TryEmitOleRun has cognitive complexity 44 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4042}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1982176afabfff8f00f9e4d9f85386e083a7ab171ae5181c8d239c35969521f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AcceptAllChanges (cognitive 44): WordHandler.AcceptAllChanges has cognitive complexity 44 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2044}}}],"partialFingerprints":{"codehealthFindingId/v1":"c407948442bbae75937975c7f49348718a9ca8231cf5a181e19f220cd0e517cc"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.ProcessRequest (cognitive 44): ResidentServer.ProcessRequest has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ee9e322c2f738319ff37f2d7cba590e6b7757357e4c4299e0e75adf9a71b002"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalMatch (cognitive 43): FormulaEvaluator.EvalMatch has cognitive complexity 43 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"12697662c642b460b0ff08dfc0050741156e35e5fb7920ae714aa76bdd17f79c"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalLinest (cognitive 43): FormulaEvaluator.EvalLinest has cognitive complexity 43 (threshold 15). Of this number, 41 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f15a9c8f9e0755135d72cc6cac312b7da41a3a2a2a6f7f9b98b81ddcc5b4478"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildMultiRowItems (cognitive 43): PivotTableHelper.BuildMultiRowItems has cognitive complexity 43 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"c59598852227425161207dd1c191b02e1f692a5c7b7ee66170cf476e7431216b"}},{"ruleId":"D2","level":"warning","message":{"text":"TableStyleResolver.MergeRegions (cognitive 43): TableStyleResolver.MergeRegions has cognitive complexity 43 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TableStyles/TableStyleResolver.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"9219e338f74eb8816c3f9f210011778d84d5f3b21aad55714453a1877745567a"}},{"ruleId":"D2","level":"warning","message":{"text":"UpdateChecker.RunRefresh (cognitive 43): UpdateChecker.RunRefresh has cognitive complexity 43 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e528d224ffef95b336dd884ec5f57f2124d185f5e8cc754cc42d567e6d6918"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsTextJson (cognitive 43): ExcelHandler.ViewAsTextJson has cognitive complexity 43 (threshold 15). Of this number, 42 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa7fdf89c002ebdf609eb2bee116b9fa3987abcb957896a7bc8951509dd92dd"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RemoveSingleShapeAnimation (cognitive 43): PowerPointHandler.RemoveSingleShapeAnimation has cognitive complexity 43 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1561}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9bb481624977db93a99952e6e2ff11667b3ae61291b61c8281546ecd1323f56"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.BuildGradientFill (cognitive 43): PowerPointHandler.BuildGradientFill has cognitive complexity 43 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bc754516f1b2082702fb64d9f6022ae7925b14292cde18a7709c913c7fd2db"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.FindUnsupportedDescendant (cognitive 43): PowerPointHandler.FindUnsupportedDescendant has cognitive complexity 43 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff14600317cb45744898387b801b7cb526d4c9d64a3645610242a9508ce5bbd5"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.ExtractFillColor (cognitive 42): ChartSvgRenderer.ExtractFillColor has cognitive complexity 42 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4299}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeec11fd45f6f45e449b6e99891299dd6cd630497f7c9dc06fc0338f18d1ffe4"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsText (cognitive 42): ExcelHandler.ViewAsText has cognitive complexity 42 (threshold 15). Of this number, 41 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ac1b97aa3dd34a032ca047353e29a7e89e5c79ae0b3da7d3249add6520b4da"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyTransition (cognitive 42): PowerPointHandler.ApplyTransition has cognitive complexity 42 (threshold 15). Of this number, 41 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"526cbafd087efb4eb5813ce54989b299d9862b0ce81d41ba995e01349da04e7d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CountLastSiblings (cognitive 42): PowerPointHandler.CountLastSiblings has cognitive complexity 42 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"8542ea6bb441744e66ace5aec47fa60e47c1d922919f3f03a7a7c7e2e09834a5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolvePlaceholderFontSize (cognitive 42): PowerPointHandler.ResolvePlaceholderFontSize has cognitive complexity 42 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1147}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab084eb4b9807fbf96116170e3d4ca553c0f3cf72dbf3851d0683e28319a6d1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderTableSvg (cognitive 42): PowerPointHandler.RenderTableSvg has cognitive complexity 42 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1026}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3cced432b9a8686c34d94bf9f7aa7b0000890671a2bbc89da3acd2aac250587"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.FilterEmittableProps (cognitive 42): PptxBatchEmitter.FilterEmittableProps has cognitive complexity 42 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Filters.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"823bc7b90ff3e0cbc3c92d69b1a7c635f539b89272b7814e7989771bc684b6f5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.CoalesceHyperlinkRuns (cognitive 42): WordBatchEmitter.CoalesceHyperlinkRuns has cognitive complexity 42 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4852}}}],"partialFingerprints":{"codehealthFindingId/v1":"210869d523161946c22ec3ac6e603833ccca2bbd188e7dc2e0874263856285e4"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MaterializeInlinedParts (cognitive 42): WordHandler.MaterializeInlinedParts has cognitive complexity 42 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7d9b84de75adb8cb2d3d194afc63362100ecf7ec23120441de480001278568"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MatchesParagraphAttrs (cognitive 42): WordHandler.MatchesParagraphAttrs has cognitive complexity 42 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Selector.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4b008a0fb4083ed6db82eb4f87389c5f7e479d408e82d21baf0028fec3ca3e7"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.PopulateDocDefaults (cognitive 42): WordHandler.PopulateDocDefaults has cognitive complexity 42 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.DocDefaults.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"1998eba8410c27b9030297c7a7bd06224df9a79879cf28c10f647837bd3a95bc"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 42): (anonymous) has cognitive complexity 42 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-sse-core.js"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"5efee8943ceef31ce773f069f791fef5ace2b34006de46775fb9b9f2e2987f8c"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.PrintBatchResults (cognitive 41): CommandBuilder.PrintBatchResults has cognitive complexity 41 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1308}}}],"partialFingerprints":{"codehealthFindingId/v1":"c804e45dd27f28df73a5fd13b288ec52849b2a3b64871dce400ea429ca92a8d7"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalTextJoin (cognitive 41): FormulaEvaluator.EvalTextJoin has cognitive complexity 41 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"036f24cfd593cbccabf404083ea4d4667fa399e9fce98906cae1e9b68d404611"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalLookup (cognitive 41): FormulaEvaluator.EvalLookup has cognitive complexity 41 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"735f33df4d472ddeff1d5ff86e3dc682e98f42b0d59549f33e7c1431dd2e7518"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetValidationByPath (cognitive 41): ExcelHandler.SetValidationByPath has cognitive complexity 41 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"c68acdf837b45238c207678ce8866695716bd291cb6dae45d0d878e445ca28a0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.PopulateWorkbookSettings (cognitive 41): ExcelHandler.PopulateWorkbookSettings has cognitive complexity 41 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47ebcc495090d0bee151e32dc442c14b3486bc8ab12264244b404a206bea115"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddMedia (cognitive 41): PowerPointHandler.AddMedia has cognitive complexity 41 (threshold 15). Of this number, 40 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"63bbad3ccfabafab32dbe40631e05514769b696dce41fe93637bd1a4b26646fe"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ProcessPptFind (cognitive 41): PowerPointHandler.ProcessPptFind has cognitive complexity 41 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"01454ca71f21eb948f182df78731f6346c85bb9768046e57228445ddd311ac41"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReparseFromXml (cognitive 41): PowerPointHandler.ReparseFromXml has cognitive complexity 41 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Text.cs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a23e5db0ebd95c437d90afb2d4b7bc74c356e076b3d3dbf0183ef0769ee676a"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolvePlaceholderLevelPpr (cognitive 41): PowerPointHandler.ResolvePlaceholderLevelPpr has cognitive complexity 41 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"abfc1d1caa9da8590f958036a6f843fc581492a3d80c6154994369254caa34b0"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetSlideByPath (cognitive 41): PowerPointHandler.SetSlideByPath has cognitive complexity 41 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Slide.cs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b54fa0accfbea96381507f14847fdb3b1ffd072d7943349891df2b92c5d149"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ViewAsStatsJson (cognitive 41): PowerPointHandler.ViewAsStatsJson has cognitive complexity 41 (threshold 15). Of this number, 40 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d350dc7bfc814d8da8fdfaa6438aabf50347594a77b002f362425fa85b3436"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 41): (anonymous) has cognitive complexity 41 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-sse-core.js"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"9632e6485e7b64cb9bfa5edfae4f3a69b8399fb619de08cfb46b4ce7aeb78d82"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.AddReferenceLine (cognitive 40): ChartHelper.AddReferenceLine has cognitive complexity 40 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Advanced.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0f49e290d2ba784537577b90ffdd4ef291046299178609bfac7a5e5611d3bf6"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ParseLiteralSeriesData (cognitive 40): ChartHelper.ParseLiteralSeriesData has cognitive complexity 40 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"f43609b5f920630eed44d60e9b485d14f35f52d14537cc67e03a14524b30c2ee"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.RewriteOver (cognitive 40): FormulaParser.RewriteOver has cognitive complexity 40 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"515ca62557e4bfee70c9c1a52649a9e0f5ee695a5cc14747de4bd0b26728eee3"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.Tokenize (cognitive 40): FormulaParser.Tokenize has cognitive complexity 40 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"4635621b3cd7f117e9e30a0bb43638d2f08db6ee0767265f4ac31e820d91d0fc"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ApplyDateGrouping (cognitive 40): PivotTableHelper.ApplyDateGrouping has cognitive complexity 40 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"833d571b5ef927ff234261e334f7ec8c2ef268dd40d79918fae2e38eab2d52d6"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddPart (cognitive 40): ExcelHandler.AddPart has cognitive complexity 40 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"8360434ce5f19a3f1a1345ff5b4bb2f9b618d74c9512f29890d7800c0ca6ef8f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddSparkline (cognitive 40): ExcelHandler.AddSparkline has cognitive complexity 40 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":945}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe1544318de92112871ec7ac9ed0f9810787d1d14a24e3e9d83a49b1919206d0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.Raw (cognitive 40): ExcelHandler.Raw has cognitive complexity 40 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/ExcelHandler.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"507db11c9d8be25493460d0321bd272dfeaa3ef32553c9cea2b71b645fb36eab"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitShape (cognitive 40): PptxBatchEmitter.EmitShape has cognitive complexity 40 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce752cf4262d84760ea4e1c034499e1a542ca16f1706b11a0910d5bb6de1fe2"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitStructuredHyperlink (cognitive 40): WordBatchEmitter.EmitStructuredHyperlink has cognitive complexity 40 (threshold 15). Of this number, 38 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":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4494}}}],"partialFingerprints":{"codehealthFindingId/v1":"77962b64cf48cd95f9204059f0be32528e037b85fa3d63da8b00960ded0f0641"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitSection (cognitive 40): WordBatchEmitter.EmitSection has cognitive complexity 40 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3178}}}],"partialFingerprints":{"codehealthFindingId/v1":"e09304bea67727e56450a5703f32e22a725666af3e7fe8ba677a475cc5ad1184"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderChartHtml (cognitive 40): WordHandler.RenderChartHtml has cognitive complexity 40 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Charts.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"c77f4fa86469fb9157a1b27feff6477469768709bc7a966ffd995d23a018036a"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ConvertSeriesToType (cognitive 39): ChartHelper.ConvertSeriesToType has cognitive complexity 39 (threshold 15). Of this number, 38 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Advanced.cs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5e49dcf9655820bc29f895a284c2202149d5858569a6d61a6354d8593c328e"}},{"ruleId":"D2","level":"warning","message":{"text":"ModernFunctionQualifier.FindNonLiteralArrayConstant (cognitive 39): ModernFunctionQualifier.FindNonLiteralArrayConstant has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"95ddd02e46563ea9231824069b59ff1b15b509c6a58f74a70aff77a32289cfe5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ChartToNode (cognitive 39): PowerPointHandler.ChartToNode has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Chart.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"841dea1421c017fb822e963ea004c50b0fd36f20aa01968e770bafe054e9f4a7"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitModernComments (cognitive 39): PptxBatchEmitter.EmitModernComments has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Notes.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"91b72386dd552d5240a17694a3ff28fb495d10c0d6d0276c170dd84d1a4a69a1"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitEquationRun (cognitive 39): WordBatchEmitter.TryEmitEquationRun has cognitive complexity 39 (threshold 15). Of this number, 38 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2012}}}],"partialFingerprints":{"codehealthFindingId/v1":"116a4804fda8b99a81edb0d05b5c9cc7745b667dcc7202cea78135feac88efcf"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EnsureBookmarkIds (cognitive 39): WordHandler.EnsureBookmarkIds has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c018e82373ed5d68ec531365135d030becd3480659ebcf7c066154ef6fb5c1"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ComputeMathElementPath (cognitive 39): WordHandler.ComputeMathElementPath has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1677}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f9051c77e658d14d9a367d23b222d2c782581a363bc613b7e7884b580b84d21"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.FillUnknownChildProps (cognitive 39): WordHandler.FillUnknownChildProps has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":6905}}}],"partialFingerprints":{"codehealthFindingId/v1":"90913eb3db2effecbebc3cec7e0bf26bc752b827c5eb4aceb40dc2a72fe2f7c8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementHyperlink (cognitive 39): WordHandler.SetElementHyperlink has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4203daea4495e86ec79abe755f78bb8b2e53b2c95e84ea0fc6e549afe5ecc3"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpFlatRenderer.BuildPropertyRecords (cognitive 39): SchemaHelpFlatRenderer.BuildPropertyRecords has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpFlatRenderer.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b8bf5536510d72c87ac9df25de68467ef8effc1b7f4e36a4aaa56245c8b5c9"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpRenderer.RenderUsageBlock (cognitive 39): SchemaHelpRenderer.RenderUsageBlock has cognitive complexity 39 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpRenderer.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e5b0b8816a68ac049dd8490e103d8b21802764e305bb5f8170ec77c7ed0e38"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderOfPieChartSvg (cognitive 38): ChartSvgRenderer.RenderOfPieChartSvg has cognitive complexity 38 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1880}}}],"partialFingerprints":{"codehealthFindingId/v1":"365b5a20e545fcc875e7c8b87f58c7c7e487496ee70c088f1236fac217bb86d4"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ResolveDefinedName (cognitive 38): PivotTableHelper.ResolveDefinedName has cognitive complexity 38 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":1261}}}],"partialFingerprints":{"codehealthFindingId/v1":"51d823db36448406bfcec431c3de7924c0f6b83113760c07606c57cd54bd66c1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitNamedRanges (cognitive 38): ExcelBatchEmitter.EmitNamedRanges has cognitive complexity 38 (threshold 15). Of this number, 37 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":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d5308219db47e26efa7a00537b5e525f65579e747a5f2f411a48541cf20b78"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddColorScaleBackgrounds (cognitive 38): ExcelHandler.AddColorScaleBackgrounds has cognitive complexity 38 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1271}}}],"partialFingerprints":{"codehealthFindingId/v1":"281596e90874336ad4ee008356d81171d28d5bee16857f9ddced9e9fa60f75e0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.FindDefinedNameReferences (cognitive 38): ExcelHandler.FindDefinedNameReferences has cognitive complexity 38 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9184c00a612ad69189005f56eb8173bda9f6defd91c1668b14d6c504c880077"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolvePlaceholderShape (cognitive 38): PowerPointHandler.ResolvePlaceholderShape has cognitive complexity 38 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4aa2ff474b3d0a05cc65fcdf9f8a22dbe4914e343040719b0c5f84148ed5441"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitChartAxesIfDifferent (cognitive 38): PptxBatchEmitter.EmitChartAxesIfDifferent has cognitive complexity 38 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Charts.cs"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"33238a82865f841d369372ac297ba479be5c539210817b9e636452bd7d9c1359"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitHeadersFooters (cognitive 38): WordBatchEmitter.EmitHeadersFooters has cognitive complexity 38 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1283}}}],"partialFingerprints":{"codehealthFindingId/v1":"3efd34cfcd54b4df82eb7d10824afbdd820b0d3d78b6048eea9253044e7da418"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetFooterTexts (cognitive 38): WordHandler.GetFooterTexts has cognitive complexity 38 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.HeaderFooter.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"498979d8b10d891dc7ae881030371d647b561e565aad0c1391fbbf92d64ce76e"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalIndex (cognitive 37): FormulaEvaluator.EvalIndex has cognitive complexity 37 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"b78e06eedfc86db80b4dc39c6f20c0c11c5053b489bbbba4bc78d3d8e5e8bae5"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalXmatch (cognitive 37): FormulaEvaluator.EvalXmatch has cognitive complexity 37 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"a309dd84a047814dc18e84a0e6cbb8513b4cddb12650fed4a292586e6319266a"}},{"ruleId":"D2","level":"warning","message":{"text":"ModernFunctionQualifier.IsDynamicArrayFormula (cognitive 37): ModernFunctionQualifier.IsDynamicArrayFormula has cognitive complexity 37 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"89076f8380e51854a746dbd4fccb27932cda9728fea0910d0e8ca2b44bc94ef1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SerializeRichTextRuns (cognitive 37): ExcelHandler.SerializeRichTextRuns has cognitive complexity 37 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2d3279e7ea4d3aede860a0ddea9aa083a8bd8397ab99cfcb084797da2bd36d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SparklineGroupToNode (cognitive 37): ExcelHandler.SparklineGroupToNode has cognitive complexity 37 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"9949a5aa06341723685b710d6aaa9f146547e14414f4a492c85a6480c96c33c4"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadCNvPrCreationId (cognitive 37): PowerPointHandler.ReadCNvPrCreationId has cognitive complexity 37 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.ShapeId.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"d16ce428cf3eb4080b79baf1ed58dfb65f776dcb153e1fe93f4df7bdb7337b8e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.Model3DToNode (cognitive 37): PowerPointHandler.Model3DToNode has cognitive complexity 37 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"589a585f2b7b1eaa4c6fc7918f27bd160fdc28787e7d63e4fcdd012209585bb4"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetModernCommentProperties (cognitive 37): PowerPointHandler.SetModernCommentProperties has cognitive complexity 37 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ModernComments.cs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e123f8c176331a153651fabcf8c2453a3d5f16a8b52028f422a333c66ac99a8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.BuildFieldAddProps (cognitive 37): WordBatchEmitter.BuildFieldAddProps has cognitive complexity 37 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Fields.cs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c385f265f80a9a98d4eee36c0defefe2152a79542b0a2628d43f7a265e43a0"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetAllWordCharts (cognitive 37): WordHandler.GetAllWordCharts has cognitive complexity 37 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Chart.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"59287e3da159931e83c57c1ffc74cd8b8b7c9956a2317577f6427da940f6d07a"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildQueryCommand (cognitive 36): CommandBuilder.BuildQueryCommand has cognitive complexity 36 (threshold 15). Most of this is not in the body itself: 0 of the 36 points are its own statements and the rest belongs to 3 function literals inside it that branch (lines 185, 221, 195). 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":"src/officecli/CommandBuilder.GetQuery.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"799114b5ec2a1d0579c4afeb5871785a616821743fbf7a3b35a3d32ac63f4d71"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ApplySecondaryAxis (cognitive 36): ChartHelper.ApplySecondaryAxis has cognitive complexity 36 (threshold 15). Of this number, 33 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":4189}}}],"partialFingerprints":{"codehealthFindingId/v1":"41bbd56ef634db24c7b0d52f303f797f2e5db96b4e2d28792f8807f557e8bc38"}},{"ruleId":"D2","level":"warning","message":{"text":"DrawingColorBuilder.ParseColorTransformSuffix (cognitive 36): DrawingColorBuilder.ParseColorTransformSuffix has cognitive complexity 36 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/DrawingColorBuilder.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"fedf0646428198694ef5f5710fb37983a58bcb85576a0869fc7b2fb243169f63"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ValidateSqref (cognitive 36): ExcelHandler.ValidateSqref has cognitive complexity 36 (threshold 15). Of this number, 26 points are the body\u0027s own statements and 10 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Validation.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3de5c5af5763d19b236fab68c5c4c68adbaa80b1c0867f9882d04d7c917314"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsHtml (cognitive 36): ExcelHandler.ViewAsHtml has cognitive complexity 36 (threshold 15). Of this number, 32 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"259c9d805a02e45fe7563d4a26ec16d4d3e10191c93a65a1531447314c91672f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ParseCsv (cognitive 36): ExcelHandler.ParseCsv has cognitive complexity 36 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Import.cs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c99fcaf9ac8a544d1528566ac23d5816ab0220ffa6086f58824af7bdc6a1f9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.PopulateCfNodeFromDxf (cognitive 36): ExcelHandler.PopulateCfNodeFromDxf has cognitive complexity 36 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1930}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfccf0b980bfed66f94828a620a54e5c019ac026027ab2995ef2eeaea9e2451c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetPictureByPath (cognitive 36): ExcelHandler.SetPictureByPath has cognitive complexity 36 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"2626167ee7713eefc70baffacd2dd849294437fa16fc552f46babd4c9d7054cc"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsAnnotated (cognitive 36): ExcelHandler.ViewAsAnnotated has cognitive complexity 36 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a75b7e2645f5657b1da9446a660775b6087dbd76560a654e6c4b88199807748"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ZoomToNode (cognitive 36): PowerPointHandler.ZoomToNode has cognitive complexity 36 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd599a12a598d35411e4cb5f9f39d19b0a10f11a14c716437ea58ee2cd29d6e4"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CopySlideParts (cognitive 36): PowerPointHandler.CopySlideParts has cognitive complexity 36 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1737}}}],"partialFingerprints":{"codehealthFindingId/v1":"b219aeaa751cef8cb616c813f122e4ab5d8497dfed7513aa049bad16225f56fa"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetParagraphOnShapeCore (cognitive 36): PowerPointHandler.SetParagraphOnShapeCore has cognitive complexity 36 (threshold 15). Of this number, 35 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"616ff484604cc0669f1a550d22feb9d479b3bd85aa72beeea014e9e238cf8e6d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddNum (cognitive 36): WordHandler.AddNum has cognitive complexity 36 (threshold 15). Of this number, 35 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":2042}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac1b64e95ddaab7c7c5034cb6ea69dbdccd82be382a7e26ee5bf94462a78b9c"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ResolveCellResult (cognitive 35): FormulaEvaluator.ResolveCellResult has cognitive complexity 35 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":1124}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe7bceaefbdfca9d5babed9eccf67d45a891dccb15f39732509fe4dd1d2767b"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaRefShifter.WalkFormulaTokens (cognitive 35): FormulaRefShifter.WalkFormulaTokens has cognitive complexity 35 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FormulaRefShifter.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"745872f8e91f2596f76f2846b4f32d9482bc194ec3fce454379e52670dd63210"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.NormalizeExcelPath (cognitive 35): ExcelHandler.NormalizeExcelPath has cognitive complexity 35 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c6899434cc86c639030d0b450eb07f9935c2f89191273affea38bffa966f46f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TryBuildRichTextHtml (cognitive 35): ExcelHandler.TryBuildRichTextHtml has cognitive complexity 35 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2924}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6ecd8a8f86b5100df5f8f34871429c7449ef4b2cfc3ce4261c4940cad23319"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RawSet (cognitive 35): ExcelHandler.RawSet has cognitive complexity 35 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/ExcelHandler.cs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f4ad821ec2c5ae216a5053d50eb43b88919d20e05e3d8cd5bebb804ee5fe9f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.BuildClickGroup (cognitive 35): PowerPointHandler.BuildClickGroup has cognitive complexity 35 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e10bbc952682c3023aa63cab81074200140a5c0fa206288b54a4b725c0bec60"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetCrossParagraphFieldSpanRanges (cognitive 35): WordHandler.GetCrossParagraphFieldSpanRanges has cognitive complexity 35 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa435371e8169f603657299bd3472bc9dd93859e0e0383b0b339ef8de0cae26d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetHeaderNode (cognitive 35): WordHandler.GetHeaderNode has cognitive complexity 35 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1499}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af248b7d6f851d9b0725b732d12104de1b7a767d1bda2c8a9acf3545d8d9965"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetFooterNode (cognitive 35): WordHandler.GetFooterNode has cognitive complexity 35 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1587}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d05e89b84b0817f4fcca6e0c97140d9c837b13e56f800cbbbdad3d7ab82164a"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ExpandCombinedLayoutKeys (cognitive 34): ChartHelper.ExpandCombinedLayoutKeys has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":4433}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3ffc43b6e68c523cac6d0e9220766134ad7d7f00f55e405e617a364ef4afc13"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.HandleDataLabelDottedProperty (cognitive 34): ChartHelper.HandleDataLabelDottedProperty has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a713091adb6a5b219a4829c74647d7e917dceb92370ba77a6d1ddeb1ca067f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateGradientFill (cognitive 34): ExcelStyleManager.GetOrCreateGradientFill has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1369}}}],"partialFingerprints":{"codehealthFindingId/v1":"f34d56a4b775655919f0404daf9eec04d7f757d136c08f70e6bda6926e3d1a30"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.TryParseComplex (cognitive 34): FormulaEvaluator.TryParseComplex has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Complex.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef3d89092a3148406ba0cf6a688cb359fe5fe01b8aea00733c550239f4f10eaa"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ParseFunction (cognitive 34): FormulaEvaluator.ParseFunction has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"336d8844a44df40a1f2d112f8e260c5f3443fec03858bd0bdef2498525ef4bc6"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalTrend (cognitive 34): FormulaEvaluator.EvalTrend has cognitive complexity 34 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"523b91b3f48245f948240f475b3d183d7ce1580db1d702504032b5324fd3b698"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalStack (cognitive 34): FormulaEvaluator.EvalStack has cognitive complexity 34 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b0a0ce89d9c059d0034b2ad59799cc818f6ee61e05c6d044d805da1a93fed2"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ResolveTableRef (cognitive 34): PivotTableHelper.ResolveTableRef has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5af53746b8518afb6fd657a878858e25a90cf96a92d9f0ed92381172afe693"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ParseFieldList (cognitive 34): PivotTableHelper.ParseFieldList has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Parse.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"878672b1015cb78a06249285ae62c8daacb8e948fbf1168b3da4d8648d66c1d9"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.HandlePostSendAsync (cognitive 34): WatchServer.HandlePostSendAsync has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"72074208b920e42edb9f9080d48fe8d9824812056f591e283a4aba0a6442e350"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SerializeCommentRuns (cognitive 34): ExcelHandler.SerializeCommentRuns has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"581d10591f0c5c3fea0e98f3fa7efaf5bd2acd5faee6b7c7cc7fd85906220409"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetCellRunByPath (cognitive 34): ExcelHandler.SetCellRunByPath has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Charts.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af4640402b29b5658164d2ec27ee638cfbec62000ba4f073fa331579b128ffb"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetExternalMediaPicsOnSlide (cognitive 34): PowerPointHandler.GetExternalMediaPicsOnSlide has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3694}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3512c6c5dd1f62d9ff2992429dde3bd67c8e6c050a60602736fd262b08fc52"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadSlideTransition (cognitive 34): PowerPointHandler.ReadSlideTransition has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2639}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f87fc2fd747ae6970e66c04c6e880c18edc003b9a040373912300b575f8ffd"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CollectOleNodesForSlide (cognitive 34): PowerPointHandler.CollectOleNodesForSlide has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Ole.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c1c39f629755b0f9e5c76a0f99dda36c54368b79512064299b5522a2b39ac2"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CloneSlide (cognitive 34): PowerPointHandler.CloneSlide has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1622}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78d2ff5e5bf1fadc2f9fcaade1cc571c77201bf3245811d1548c66e7470e8e1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.FillUnknownRunProps (cognitive 34): PowerPointHandler.FillUnknownRunProps has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":2528}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa2d901fe6d73fa10d65abaa2048a32341860722a60febc50b0e2b8054381ce8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.ShouldCollapseSingleRun (cognitive 34): WordBatchEmitter.ShouldCollapseSingleRun has cognitive complexity 34 (threshold 15). Of this number, 32 points are the body\u0027s own statements and 2 belong to 2 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1224}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee88d824e7aac6a59992727eee70e4bab0fd31f15a9782bdc92c231b842abe7c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ProcessWordRange (cognitive 34): WordHandler.ProcessWordRange has cognitive complexity 34 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"e105dbf2e3e649be9506caaba7d68c0f9095a3fde8fdb5edf82fa674e7dbbb1d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.HyperlinkToNode (cognitive 34): WordHandler.HyperlinkToNode has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":2948}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d1c17a76daba8c51e69e21bf1256d7947af5ffd14180e46ea38a58d6c7b107e"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpRenderer.RenderProperty (cognitive 34): SchemaHelpRenderer.RenderProperty has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpRenderer.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3170a0a70d84ded00bc08365f86e7667ca077d0c8431ecba0b72994edcbaf83"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 34): (anonymous) has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-sse-core.js"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"cce71e6108901b757e2f30db80ffaed3e3e7c96278887ce6da6e126339604924"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 34): (anonymous) has cognitive complexity 34 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-sse-core.js"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef3d2d6149cc4cccab6de7dd3f01d9442b36ac072dbdcf1da7de9ee564c8037"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildRootCommand (cognitive 33): CommandBuilder.BuildRootCommand has cognitive complexity 33 (threshold 15). Most of this is not in the body itself: 1 of the 33 points is its own statement and the rest belongs to 3 function literals inside it that branch (lines 75, 123, 33). 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":"src/officecli/CommandBuilder.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3b1a7a01aa42e85a02f214e3f3afdc801dcb9cc382ff5f5978cf1d7775e4f34"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.FitPolynomial (cognitive 33): ChartSvgRenderer.FitPolynomial has cognitive complexity 33 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5568}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6e93466535827e9b1a25b7240b954639126321c5d30cd1efb66195943c01b9"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.HandlePostSelectionAsync (cognitive 33): WatchServer.HandlePostSelectionAsync has cognitive complexity 33 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ba954ba7076dc408b4e97dbcc4df2e33fb978f459adc93e269d5c30dd9a9c1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyMotionPathAnimation (cognitive 33): PowerPointHandler.ApplyMotionPathAnimation has cognitive complexity 33 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff56f85074eb1976fdc3e595d81557c0423c5210c13f6d6fb44e3ab7bdbb137"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetChartByPath (cognitive 33): PowerPointHandler.SetChartByPath has cognitive complexity 33 (threshold 15). Of this number, 31 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Chart.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad82e326ac72a6e7d6616eb756a1eeb995fec3d74d509216e5daeb7982fb81d5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetGroupInnerFrameByPath (cognitive 33): PowerPointHandler.SetGroupInnerFrameByPath has cognitive complexity 33 (threshold 15). Of this number, 32 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":1563}}}],"partialFingerprints":{"codehealthFindingId/v1":"66500545e83230e357417816f2e132195baf84cdcdd83884ad33ce9b163a6246"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderAnnotatedChildren (cognitive 33): PowerPointHandler.RenderAnnotatedChildren has cognitive complexity 33 (threshold 15). Of this number, 32 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7664a1dae284669a2bb48af8e21600bf43735d6e64679781605d04964baab53"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitHeaderFooterPart (cognitive 33): WordBatchEmitter.EmitHeaderFooterPart has cognitive complexity 33 (threshold 15). Of this number, 32 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"a751526686939fd3e6703b73a716765b6ac02bba40ba981ce738885ed858fc3a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetSdtContentCrossParagraphFieldSpanRanges (cognitive 33): WordHandler.GetSdtContentCrossParagraphFieldSpanRanges has cognitive complexity 33 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"0360ea4b1250e50238f723f22370ceb96d1462331237dbce299ed8f25d0224f3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RecoverWrapperRunTexts (cognitive 33): WordHandler.RecoverWrapperRunTexts has cognitive complexity 33 (threshold 15). Of this number, 32 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef303413aaa39ee568f0fc9c276574c723a87376fc0004a38b417d025da148e8"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpFlatRenderer.AppendPropertyRows (cognitive 33): SchemaHelpFlatRenderer.AppendPropertyRows has cognitive complexity 33 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpFlatRenderer.cs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"effe9004fef8aaa0da704eb93a95e6e9554816578bde212cb9bee12d2b21b99d"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildCreateCommand (cognitive 32): CommandBuilder.BuildCreateCommand has cognitive complexity 32 (threshold 15). Most of this is not in the body itself: 0 of the 32 points are its own statements and the rest belongs to one function literal inside it that branches (line 136). 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":"src/officecli/CommandBuilder.Import.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"782a1e5ffe9436603c96c4182ac6cdb32bfe493256e568786ad636ed563478a9"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.DiagnoseEmptyResult (cognitive 32): AttributeFilter.DiagnoseEmptyResult has cognitive complexity 32 (threshold 15). Of this number, 31 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ace41079cc9febb6d087e53ae5cde1e342777cfc435687ec9bb2d8b51273315"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.RebuildComboChart (cognitive 32): ChartHelper.RebuildComboChart has cognitive complexity 32 (threshold 15). Of this number, 31 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":"src/officecli/Core/Chart/ChartHelper.Advanced.cs"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"31005e840f94926203022dfec9c418e8ca0dec4a7ae26b6e5c15cfce319fadf8"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ParseSeriesDataExtended (cognitive 32): ChartHelper.ParseSeriesDataExtended has cognitive complexity 32 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a18344ea76cc6c605d40f8a65d614e8533c9ccaf851afc7f0abe66019c6cdc8"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.UpdateSeriesData (cognitive 32): ChartHelper.UpdateSeriesData has cognitive complexity 32 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":2498}}}],"partialFingerprints":{"codehealthFindingId/v1":"d290ccbf023410e8c455de4482c4c575917a15a899cb68404d30512a179a6fd2"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.MaybeExpandTablesForCell (cognitive 32): ExcelHandler.MaybeExpandTablesForCell has cognitive complexity 32 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"56287ceec477aef1f09e801fa753e0642962e91caf4be9acd343f11cb0ad4333"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveFillColor (cognitive 32): PowerPointHandler.ResolveFillColor has cognitive complexity 32 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2760}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa630386302d699acd960cc75a847f084e4ba22eaa15ad39da7ff14bf350b696"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.BuildSvgGradient (cognitive 32): PowerPointHandler.BuildSvgGradient has cognitive complexity 32 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1655}}}],"partialFingerprints":{"codehealthFindingId/v1":"054203734455210c313a32fbed0c870ed8158802668edddeee36d713637840e8"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitNotes (cognitive 32): PptxBatchEmitter.EmitNotes has cognitive complexity 32 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Notes.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e59a125dcf06a97f22c970f85ca6cf9ec1c397d50069864c2b11a4e4de38d58"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.ComputeParagraphChildDocOrder (cognitive 32): WordBatchEmitter.ComputeParagraphChildDocOrder has cognitive complexity 32 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c6f88750e9de6bb2c2f4484f67240e3f94803ab316dc9edf1b3c741957607c9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitPlainOrHyperlinkRun (cognitive 32): WordBatchEmitter.EmitPlainOrHyperlinkRun has cognitive complexity 32 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":4334}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c5e413a9fd32c3d7e94973ecc5d9129b02cfff79e20977ed9606aeee797effb"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitOneNoteSpecialNotesFixup (cognitive 32): WordBatchEmitter.EmitOneNoteSpecialNotesFixup has cognitive complexity 32 (threshold 15). Of this number, 30 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"15863439e539372a9b789b33eb02320d4dc2b67f96fc7016555a067d77384f3a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MoveWithTrackChange (cognitive 32): WordHandler.MoveWithTrackChange has cognitive complexity 32 (threshold 15). Of this number, 31 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":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebebab864bf22f4250fc37dd240443a723c6699cbc2631e1e4bb4b65f3862e08"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ParsePath (cognitive 32): WordHandler.ParsePath has cognitive complexity 32 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"83d2efe1c2815d4a5bfc5f8028294d127f27e1a9ab6a254dabe7de55537701f8"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.MatchOne (cognitive 31): AttributeFilter.MatchOne has cognitive complexity 31 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b4d9398b0c6caeeefcaa58a1961b45c970f828b2289fe7130346635fde420e"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.BuildLabelTextProperties (cognitive 31): ChartHelper.BuildLabelTextProperties has cognitive complexity 31 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":3664}}}],"partialFingerprints":{"codehealthFindingId/v1":"d74b7d6f0287e1f696949b45c09882cf5f00bde46234eb6dc5542974648e3364"}},{"ruleId":"D2","level":"warning","message":{"text":"MermaidParser.Parse (cognitive 31): MermaidParser.Parse has cognitive complexity 31 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Diagram/MermaidParser.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb74d3a056e688537bd1d518afa00fdbcfc73f3019e4f368fab8c25a8c282439"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.FontMatches (cognitive 31): ExcelStyleManager.FontMatches has cognitive complexity 31 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"6242c13060ccafe2148da7f25ea203d2255813148e4e1c07803fde1f5505717c"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalMinverse (cognitive 31): FormulaEvaluator.EvalMinverse has cognitive 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":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfac5468d8d0a69b0c46ecccc391dbc887059571cf5d0a1adc82e4d78811d9a3"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.HasAnyValueInOuterRowOuterCol (cognitive 31): PivotTableHelper.HasAnyValueInOuterRowOuterCol has cognitive 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":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":2491}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1c5443c6bfaad8286e961b12303baca20d3fcfd1322ab3c866a197d16fb37f8"}},{"ruleId":"D2","level":"warning","message":{"text":"SsrfGuard.IsPublicAddress (cognitive 31): SsrfGuard.IsPublicAddress has cognitive complexity 31 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SsrfGuard.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"020f465dff84d4d07664a955f2a1e1eba565de15dd2911cb0c28ee136d549c63"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.ClassifyCell (cognitive 31): ExcelBatchEmitter.ClassifyCell has cognitive complexity 31 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"caf77c52b7ca690be4e6719b1cb4871a27707deb7b381ec4bfd2a502919b4773"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddAnimation (cognitive 31): PowerPointHandler.AddAnimation has cognitive complexity 31 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb8d0c851473874a5e945ee20076e1c49e257f92a5aeb6c837bf00644d1bd01f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetThemeNode (cognitive 31): PowerPointHandler.GetThemeNode has cognitive complexity 31 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Theme.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b85ec59e779f44bd0bb832f4e35c7eb5c1c222eedad8dd04f5631275aaa8d13"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddChart (cognitive 31): WordHandler.AddChart has cognitive complexity 31 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc769f92cc4547be622be0106d7d0ab56b2aec04a57f4de4c08a926de9195c4a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyCropToBlipFill (cognitive 31): WordHandler.ApplyCropToBlipFill has cognitive complexity 31 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.ImageHelpers.cs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"f88567e897c42eaec49273558fcc3225f7aa387637b000b733d772696533c59a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyCommentFormatKeys (cognitive 31): WordHandler.ApplyCommentFormatKeys has cognitive complexity 31 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc839b10a6bbd6e19c5b1ae9fd0238bb980c1d8a632b50192a6be7f44c6d114"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementSdt (cognitive 31): WordHandler.SetElementSdt has cognitive complexity 31 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"d873abea7bba83fc0c0227a754108d938b92620b7ce58bffb485150c3e53a070"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetTableStructuralBookmarks (cognitive 31): WordHandler.GetTableStructuralBookmarks has cognitive complexity 31 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd77b8dafd491e7c95e37f0c23ce87614a8e82824df4415a226a7bda71f45472"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ApplyColorRule (cognitive 30): ChartHelper.ApplyColorRule has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Advanced.cs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67795c0dbebfae92de869912cc1cfc210b1a9100c0284774931480391868ed3"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.ComputeWordPatches (cognitive 30): WatchServer.ComputeWordPatches has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1428}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5caab42c61e33ab3368e8a57a3b56e7780669691b6c950bc6f50dcbbd1a4a3c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHtmlRefresh.ApplyPageNumbers (cognitive 30): WordHtmlRefresh.ApplyPageNumbers has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordHtmlRefresh.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b5f8dabbe33df500075cd6de566419e6933005ce99be3489250c71aab91d9c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ResolveChartRangeCells (cognitive 30): ExcelHandler.ResolveChartRangeCells has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.ChartCache.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e717b2bfe75c30cb6914f1a58e8f88dfeb892db516d75d17cdcd2aef72af3e0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildCommentTextFromRuns (cognitive 30): ExcelHandler.BuildCommentTextFromRuns has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"f49739020959107019af0375cc3b37290ee204a9169592f83b2c7cb8e0293a3a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TryResolveRowColumnCell (cognitive 30): ExcelHandler.TryResolveRowColumnCell has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.RowWhere.cs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb9fb70911d442512e99f2d69081348adc1b26988f9faecb4442916eb06ec71e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetColumn (cognitive 30): ExcelHandler.SetColumn has cognitive complexity 30 (threshold 15). Of this number, 29 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.RowsCols.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"b64e7a5441d978b0d5138faaa770596f5389c0d703ac35902d30ac5f951c95b6"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddSlicer (cognitive 30): ExcelHandler.AddSlicer has cognitive complexity 30 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Slicer.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"42ca0b4f08f20957154087f64d1ed9be115a94a404fb8ab76e0a1327e3e25621"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetModel3dOnSlide (cognitive 30): PowerPointHandler.GetModel3dOnSlide has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3854}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e915fbf3da860c85a99d6dcd0d1b3a446840d4e14200097fdaa7f5bfbca40e0"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ProcessPptRange (cognitive 30): PowerPointHandler.ProcessPptRange has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"f044ec31913630c35a35e1e141b99cbb79dd1a6a207ed1753f7c10853c4d7dc5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ParseShapeSelector (cognitive 30): PowerPointHandler.ParseShapeSelector has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c5ad5813af23e0d3dd3d07e8dc2f0fff9367a6a19ab26add3c6e8d3c3136dd8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplySdtExtraProps (cognitive 30): WordHandler.ApplySdtExtraProps has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2516}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e6b4e2438d60b07377c33e9b75c62777ad9ef178634c1fc409e8715a808cb9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ReadDocDefaults (cognitive 30): WordHandler.ReadDocDefaults has cognitive complexity 30 (threshold 15). Of this number, 29 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"372b987c8699dda16f0adc19cba4c3cf1dce95b10bac6df19e517c79d150875b"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetConditionalTypes (cognitive 30): WordHandler.GetConditionalTypes has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a47557a93effa76168404d1ba811e106a240ed69ac962cb2f886b922552a79"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetWatermarkPath (cognitive 30): WordHandler.SetWatermarkPath has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"44989a18071c91c802f02f8c1d642ed449ce18ac9af51dab349b058abf702977"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyParagraphMarkRevisionNamespaces (cognitive 30): WordHandler.ApplyParagraphMarkRevisionNamespaces has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"c280176ef0ffe09ba3d1323b5f927ccbc58ea4d3e6c523de17440ece8cf019c4"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.ExecuteDump (cognitive 30): ResidentServer.ExecuteDump has cognitive complexity 30 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"44024bfcb2380e76b0c6ffc76800d154a17f07023f15fedda3b98a86b36a5dbd"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.ExtractColors (cognitive 29): ChartSvgRenderer.ExtractColors has cognitive complexity 29 (threshold 15). Of this number, 26 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4113}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd85f158e52a42f374e096392ecb5eb4219c88a07ad632d0402554896b8ca367"}},{"ruleId":"D2","level":"warning","message":{"text":"EmuConverter.ParseEmu (cognitive 29): EmuConverter.ParseEmu has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/EmuConverter.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a12088cfdb29edf10b98c9fc9f68194c2e2f8d5e894700f78c484865793e428"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreateBorder (cognitive 29): ExcelStyleManager.GetOrCreateBorder has cognitive complexity 29 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1457}}}],"partialFingerprints":{"codehealthFindingId/v1":"326929234c86c78a542d8b0c49eb28f49194fb5936acc3cddcfc024447c472dc"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.Invert (cognitive 29): FormulaEvaluator.Invert has cognitive complexity 29 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec404a6d413687bc757229fe678bbb03154beb080c5d028b39214a437bddfee"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ApplyTopNFilter (cognitive 29): PivotTableHelper.ApplyTopNFilter has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"65dcd37c9308b55522ad19d1ae2ea9808d2c9f1196b3336165f536c7790c083d"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.HandleWatchMessage (cognitive 29): WatchServer.HandleWatchMessage has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a11249af2fa7a9bf62404f3c2b25db448f2fabc1ce98f1b98703af3c0106e0d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddCfExtended (cognitive 29): ExcelHandler.AddCfExtended has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"29422df30f0c4944cd4dee5cc1f9a4e95849b45dba42b9c1d09566eee98e16e5"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BackfillSeriesRangeValues (cognitive 29): ExcelHandler.BackfillSeriesRangeValues has cognitive complexity 29 (threshold 15). Of this number, 27 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":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"85461db5cd364cdaccbbb5251eb02a94f3200293ceac11a3d23d75d5f583cd08"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TrySetAnchorPosition (cognitive 29): ExcelHandler.TrySetAnchorPosition has cognitive complexity 29 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"edad5c607b9fa5a8a705208697a32f1242923bb2e5bf3c6cbf96ccb217c36a9c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CollectOleNodesForSheet (cognitive 29): ExcelHandler.CollectOleNodesForSheet has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Ole.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef60db27a50b28813ea0d146bdff3cb6fcb0d785bc6977a9c8b658d859fa8037"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SyncTableColumnsAfterColDelete (cognitive 29): ExcelHandler.SyncTableColumnsAfterColDelete has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"a322624d5d476e5f9448bb9dd0cca3091e9d5012246e27efadd0c7c314690611"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsStats (cognitive 29): ExcelHandler.ViewAsStats has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"2170f0e8e08b35b147333f558f8febb60d937a2788b4cf81bc06a8559dff7dc9"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetPictureBlipCompanionParts (cognitive 29): PowerPointHandler.GetPictureBlipCompanionParts has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4397}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd36d6b7e8e48a911cf7be7b87856e39eb5be7499de2a33478f92d883564575"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ViewAsHtml (cognitive 29): PowerPointHandler.ViewAsHtml has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"5df00c74570ed25382588ea8b74896ec7cbfeea0caac379434c57c01ae2e604c"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderGroup (cognitive 29): PowerPointHandler.RenderGroup has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2324}}}],"partialFingerprints":{"codehealthFindingId/v1":"3694275a8dc88af5a1b3783b1557ad214721d982eb222ecc1cb7774067b4963b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetFontScheme (cognitive 29): PowerPointHandler.SetFontScheme has cognitive complexity 29 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Theme.cs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb2938eeac953a002a6f2e8b2fbc099005f8f2f1ba35e0a9a086d572caac8dd"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ViewAsText (cognitive 29): PowerPointHandler.ViewAsText has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8085641df634b03e8d02a24330d81eb5c109c0ba71cbbf99ff8f7251705f5a54"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitPptx (cognitive 29): PptxBatchEmitter.EmitPptx has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0fc8ccdb91d6cd6a6ba4933c213672a98c1458ec01c0adb6401d88c65651c4f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildGradientXml (cognitive 29): WordHandler.BuildGradientXml has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":3414}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d58ab9c8b271b25d604b50103d588c4913154ea25c39bf15a7756dbaceb8836"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.FormFieldToNode (cognitive 29): WordHandler.FormFieldToNode has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.FormFields.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d48846b1897611e7335f4d199142cfc7f496658baba11e0e5e69a67116b9f7e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveBodyMetricsForMarker (cognitive 29): WordHandler.ResolveBodyMetricsForMarker has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Markers.cs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"abde19d387a92d71699875e8d5b7fb3bf2e2a230129566cfcc7da74d42e11aaa"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.FootnoteToNode (cognitive 29): WordHandler.FootnoteToNode has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1854}}}],"partialFingerprints":{"codehealthFindingId/v1":"59ef8be93cdadb321ee265d9c0af6ea0a3d06fb7aa363340e90d86074a216c07"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EndnoteToNode (cognitive 29): WordHandler.EndnoteToNode has cognitive complexity 29 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1945}}}],"partialFingerprints":{"codehealthFindingId/v1":"724295ba942f92cb96db6ebdd81e2be2ddbcb2844c6f2575179f6425c4390ace"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EmitEffectiveRunProperties (cognitive 29): WordHandler.EmitEffectiveRunProperties has cognitive complexity 29 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"54125d4491a3129013b65aaebebd618aea3b825a5a9b3bc0d8b5d8b4e026a263"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildFormFieldRunMap (cognitive 29): WordHandler.BuildFormFieldRunMap has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2493e10ea130a049fa5cd1db2eb03269403b427f06a3a356c3964aef549eb3b"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpLoader.ResolveElementAlias (cognitive 29): SchemaHelpLoader.ResolveElementAlias has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpLoader.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f95b602fdbe83e56c912551ac70cb227d9b72685960693cf67e6ab3ef85dc13"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.ExecuteBatch (cognitive 29): ResidentServer.ExecuteBatch has cognitive complexity 29 (threshold 15). 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":"src/officecli/ResidentServer.cs"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"2592ba5c48f09c4aa2ee3e3136716b4f46e80aba7d62ac4683f407a9735bec02"}},{"ruleId":"D2","level":"warning","message":{"text":"BlankDocCreator.CreateWord (cognitive 28): BlankDocCreator.CreateWord has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BlankDocCreator.cs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ec606fcb133ae9f16a14dbe0cb357a9c2b0946fff49e2b4b92e0a47437cf37"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ApplySeriesRangeRefs (cognitive 28): ChartHelper.ApplySeriesRangeRefs has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34abd1f341efcc1bdd0e67aa7b1f7ef0a95112a039b7c110cbba7d444020889"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageSource.TryGetJpegDimensions (cognitive 28): ImageSource.TryGetJpegDimensions has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ImageSource.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"35389b5bfb33004e2d3a9dfbfecc00794567e8af73b615417681018929e8261c"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ParseCalculatedFieldSpecs (cognitive 28): PivotTableHelper.ParseCalculatedFieldSpecs has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f3fd59887a184c4067de59c08c5a14b3b705561d32a9039fa8dc35361e8648b"}},{"ruleId":"D2","level":"warning","message":{"text":"SkillInstaller.RefreshInstalled (cognitive 28): SkillInstaller.RefreshInstalled has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SkillInstaller.cs"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"df08a2b7dc4b0873f7398bbf26ceaa51fbdc56b8357d70e533db4d7fb319e8da"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitTables (cognitive 28): ExcelBatchEmitter.EmitTables has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6a419b4a89e04041f63c9fc919a30ea9d492124c6a663230e7f4cbc50f92d11"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetSpillWidthPt (cognitive 28): ExcelHandler.GetSpillWidthPt has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"c453e573ba620a0cb7b0ba7fccef584cec6ac1eb08532e0e9648634ceb4b89a9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SetRow (cognitive 28): ExcelHandler.SetRow has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.RowsCols.cs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcf10c562ea9db880ee870442d000f73924e4e3039000aa1df8cdcb7336ccf7b"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsOutline (cognitive 28): ExcelHandler.ViewAsOutline has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c4440d1d2254f51210a91bec1a0d11a2682f089c2a1b5c3faf944e10cff8ec2"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsStatsJson (cognitive 28): ExcelHandler.ViewAsStatsJson has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c146380ad26f421c4b67de1e9938a29f159a850b391eea7e673b0d9dae7e2f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.EnumerateChartRefFormulas (cognitive 28): ExcelHandler.EnumerateChartRefFormulas has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4024bfb336c144faf9cab92bc9206bcd91ed7d812777284b7dddefbda9ec599"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetShapeStyleXmlWithOrdinal (cognitive 28): PowerPointHandler.GetShapeStyleXmlWithOrdinal has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4531}}}],"partialFingerprints":{"codehealthFindingId/v1":"785965ba8af298cc42d851285bb19d27ff1d0093768d8e28b7512777879e876a"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddSlide (cognitive 28): PowerPointHandler.AddSlide has cognitive complexity 28 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Slide.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a78cbc46f96f0eb95b4e7dfa45ebc7d608c642d94c8fff6e75c31e9037a524ce"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddPptAtFindPosition (cognitive 28): PowerPointHandler.AddPptAtFindPosition has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f93d9cde9b3d498ab5be12a8c1572bd2e0a9425c1b99b24a26151dead3b51ce"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderModel3D (cognitive 28): PowerPointHandler.RenderModel3D has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2644}}}],"partialFingerprints":{"codehealthFindingId/v1":"feb19fbfb41977f4804f52697f04926aed910eecd7f405d8b7cd243acfc28405"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CountModernAuthorReferences (cognitive 28): PowerPointHandler.CountModernAuthorReferences has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ModernComments.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"03f1f3ffd04bc54493580834e191c5425737ee54a7c4cb0d005ebcf66b6c321e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RemovePictureWithCleanup (cognitive 28): PowerPointHandler.RemovePictureWithCleanup has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f5183bba44908ce1b6f8d3f9f4ed5c8380314dde9e807da65baac5a0ee25a28"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.BuildAnimValueFromProps (cognitive 28): PowerPointHandler.BuildAnimValueFromProps has cognitive complexity 28 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":2223}}}],"partialFingerprints":{"codehealthFindingId/v1":"82ce050929927b6337977218efad4f5884a4c17b2068f00e0ff2cc00c8cbaed2"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetMorphCheckNode (cognitive 28): PowerPointHandler.GetMorphCheckNode has cognitive complexity 28 (threshold 15). Of this number, 24 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Theme.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"87588c5eff32cbeeddf35e05271d6871872aeddc3e367b1a740ab7f102a4b31b"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.CaptureChartAnchorProps (cognitive 28): WordBatchEmitter.CaptureChartAnchorProps has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":3247}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62ac903c731cd390be04161727c96ee169dbafd376046ed5968b158ed8842c8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderCellListItem (cognitive 28): WordHandler.RenderCellListItem has cognitive complexity 28 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"011fe14e3c9db84f71afc715152103907742b2dd70609d3980b29326c73ec6b2"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyFootnoteEndnoteFormatKeys (cognitive 28): WordHandler.ApplyFootnoteEndnoteFormatKeys has cognitive complexity 28 (threshold 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":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"5703524d017a12afc45870e2b2bdbe288749aee4347e568150f6d937394c1d30"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AdvanceOrderedCounter (cognitive 28): WordHandler.AdvanceOrderedCounter has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"2694b21bc100680d2fd90f80e288f01f4eb14589eda64f9b9d45ff66ec0fb32b"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpLoader.MergeSchemaJson (cognitive 28): SchemaHelpLoader.MergeSchemaJson has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpLoader.cs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"a788a6a4d00da301f128c54e665b68cd26e9a9d9324312e34685e60595038061"}},{"ruleId":"D2","level":"warning","message":{"text":"McpServer.RunAsync (cognitive 28): McpServer.RunAsync has cognitive complexity 28 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpServer.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce28bd92633be076b1ac3978d8ca2edbf38d9714f3242ddf837bdd19f151ab4"}},{"ruleId":"D2","level":"warning","message":{"text":"CompoundFile.WriteSingleStream (cognitive 27): CompoundFile.WriteSingleStream has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/CompoundFile.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"78371f30477ba5f9213df14c9ef80e263e1255e7ed87d1652147a2b729b56575"}},{"ruleId":"D2","level":"warning","message":{"text":"FontMetricsReader.CmapHasCodepoint (cognitive 27): FontMetricsReader.CmapHasCodepoint has cognitive complexity 27 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"592c10b785ff561fc365aae7681ec07a18adf46f33ad8123ce7ce0ce57e5077f"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalVlookup (cognitive 27): FormulaEvaluator.EvalVlookup has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b817d96798bb46429cf22d7d7b8339b207eb4c8dca0babe5049f69ee440267"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalHlookup (cognitive 27): FormulaEvaluator.EvalHlookup has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cba0a4a609f5769beb404cc991bb5ef465d8c0fe679d87958e087ce2eb2aa56"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlScreenshot.CaptureClipped (cognitive 27): HtmlScreenshot.CaptureClipped has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d4522710726f8e0440fa738ff3a7ec0d21f7792374500b22159784b14e3679"}},{"ruleId":"D2","level":"warning","message":{"text":"RawXmlHelper.EnforceKnownSchemaOrder (cognitive 27): RawXmlHelper.EnforceKnownSchemaOrder has cognitive complexity 27 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a22642b108db29c25b48b3a18c9460ad281a4e590bbfe8b8c4dc183ddb80430"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetCellDisplayValue (cognitive 27): ExcelHandler.GetCellDisplayValue has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1564368ed6b9df59aad273b32a826337cda42db5eb2b0141c13c80158277e5b"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.MaybeSyncTableHeaderName (cognitive 27): ExcelHandler.MaybeSyncTableHeaderName has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b9091943795b78687f0c6249801d9d0ce41cb919a40d0a8eadcc974ae38ba5"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ShiftColumnsLeft (cognitive 27): ExcelHandler.ShiftColumnsLeft has cognitive complexity 27 (threshold 15). Of this number, 26 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"626934a1d39a12f43cd0f246232e04386bd1ad2d43744a70ec2acd0b2b358e5b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyBackground (cognitive 27): PowerPointHandler.ApplyBackground has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"e851818957436217bf1c0600d81c9be62bead2c47171a48121078d33dfbaf8ef"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetSlideCommentProperties (cognitive 27): PowerPointHandler.SetSlideCommentProperties has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Comments.cs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"055370a0b3aa7f6e195ff184a619a0d7641b2ac10f0b85bb6e3e7a75b161a993"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetMathElement (cognitive 27): PowerPointHandler.GetMathElement has cognitive complexity 27 (threshold 15). Of this number, 22 points are the body\u0027s own statements and 5 belong to 5 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Text.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e048da8a8087a34d9849b8895558b0833f5888ab8ec61fe55c7f35c5d4a34f2"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.PopulatePresentationSettings (cognitive 27): PowerPointHandler.PopulatePresentationSettings has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Presentation.cs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"5170dd898b821e030d302f8db98b0325774bfc7cb0e95f742348d781ff9f789a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.FoldPgBordersProps (cognitive 27): WordBatchEmitter.FoldPgBordersProps has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3351}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c0bb9a94434a27e4d3a13e4f2a2c83e3ad646a9175a3dd021fa67b05696efff"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddDiagramNative (cognitive 27): WordHandler.AddDiagramNative has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Diagram.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aecedbabbd67771382e0907a1e65e1ae4e80e4eebcfe55504ebe83b2b549db1"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddTableColumn (cognitive 27): WordHandler.AddTableColumn has cognitive complexity 27 (threshold 15). Of this number, 24 points are the body\u0027s own statements and 3 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":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f43149d0c99767547bfe40e9f82976f14a4cff0c1ce193b88cc92e591c3ed7f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildChartFrame (cognitive 27): WordHandler.BuildChartFrame has cognitive complexity 27 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.Helpers.Chart.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"241c28306eb963cf6194ee4bdd3f9fd0008bd4fec0c44925b3b39fcae2470e64"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddBlockAtSplitPoint (cognitive 27): WordHandler.AddBlockAtSplitPoint has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfff61204a42e289b45e5b65cc2fec464f83055cf33fb70364a4fbd444884b7f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetPictureEffectsCss (cognitive 27): WordHandler.GetPictureEffectsCss has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dde807c49683f6a0192bac754fb4114bca174a73bcd942b1b5214fd9b4c1953"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CreateOleNode (cognitive 27): WordHandler.CreateOleNode has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.ImageHelpers.cs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"60bdb1cd04be1d40b16daaabbf2208e08d629a5b856c4c5553edc53c552e4da5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SdtBlockToNode (cognitive 27): WordHandler.SdtBlockToNode has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3516}}}],"partialFingerprints":{"codehealthFindingId/v1":"049d00688a34dc1ca2cb2abefa4123ca65dbf04740ca3b1518bf09403307c23d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SdtRunToNode (cognitive 27): WordHandler.SdtRunToNode has cognitive complexity 27 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3576}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0f0c5722781354f73e150cb42ffb7436f5e8b58f6e1aaab6612a85660e62a66"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ParseSeqInstruction (cognitive 27): WordHandler.ParseSeqInstruction has cognitive complexity 27 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.SeqEval.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"20650baadbc122330c5453ccf5c112ec20abc3fbb75faf5b9d26f2bfb98a352b"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EnumerateRevisions (cognitive 27): WordHandler.EnumerateRevisions has cognitive complexity 27 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"92afb190b54078d4a8a18cb912ff4ec9bd1c5daf69bf106b09df0234ce03082d"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.FormatNodesCompact (cognitive 26): CommandBuilder.FormatNodesCompact has cognitive complexity 26 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 5 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.GetQuery.cs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b5bfe9fd3be80c6660aa21f4a9b0167ba1ec30ca0bdd38c81de06fe95494a8"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildGetMarksCommand (cognitive 26): CommandBuilder.BuildGetMarksCommand has cognitive complexity 26 (threshold 15). Most of this is not in the body itself: 0 of the 26 points are its own statements and the rest belongs to one function literal inside it that branches (line 305). 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":"src/officecli/CommandBuilder.Mark.cs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"e81f3aec7c6227bfe314857ca015df79f542baae0088af5d71aae00004918941"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ApplyComparison (cognitive 26): FormulaEvaluator.ApplyComparison has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f5bddf6e67a6eaed4271bc738679c0c0d55699ddf9d313cba4e3810bde78a9"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.Expand2DRange (cognitive 26): FormulaEvaluator.Expand2DRange has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":1361}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31f63ba5ee33644329f1fc6baec99bc1700dde98c12bcb571a2aae0d4d952a3"}},{"ruleId":"D2","level":"warning","message":{"text":"ThemeHandler.TrySetTheme (cognitive 26): ThemeHandler.TrySetTheme has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ThemeHandler.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"dac77eac7648e78d340bd71bb9d93db4c05d45cbee106489f3c650a18f52169f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ValidateFormulaArgCount (cognitive 26): ExcelHandler.ValidateFormulaArgCount has cognitive complexity 26 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Validation.cs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"8acc8c0a61aa295d2cf6921a0170dbe14d74fdd2815dbd206334d1eb0f00fa7d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.NormalizeValidationFormula (cognitive 26): ExcelHandler.NormalizeValidationFormula has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Validation.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"5230436daba268bac292160fc9f142107a7b9a9b8aea9ff1f894173f669a4f3c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.MatchesCellSelector (cognitive 26): ExcelHandler.MatchesCellSelector has cognitive complexity 26 (threshold 15). 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":"src/officecli/Handlers/Excel/ExcelHandler.Selector.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b7f2e78633d39f7f99e2caf4375f0538d6ac5290fa8b0ff2d643861cfdcfdaa"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GrowSlideLayoutParts (cognitive 26): PowerPointHandler.GrowSlideLayoutParts has cognitive complexity 26 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"388072c43c50c3e0ed986d4d65cb0ac1dec5f6d319a8166663c108ed3e7ae9e9"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetActiveXOnSlide (cognitive 26): PowerPointHandler.GetActiveXOnSlide has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3235}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac704314713f1db1316ba42d8b89840f7f887a6532964554e5e13d4be72d63b0"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetShapeParagraphFieldXmls (cognitive 26): PowerPointHandler.GetShapeParagraphFieldXmls has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4825}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a022ed3d0cd64d02416a9e083b41c7b2923902422b3448d9085fdea87c84ab"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderNestedGroup (cognitive 26): PowerPointHandler.RenderNestedGroup has cognitive complexity 26 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2463}}}],"partialFingerprints":{"codehealthFindingId/v1":"a493483e1cc2c8fc31ba642452aaee2927920e728a6047ec3424ddc543f5cd36"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitFormFieldRun (cognitive 26): WordBatchEmitter.TryEmitFormFieldRun has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":2127}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0cb9b16ac1ec8b7675c07cc79f400f296a1c27d4a2b20837612d3a9260969f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.StripDanglingNoteSeparatorRefs (cognitive 26): WordBatchEmitter.StripDanglingNoteSeparatorRefs has cognitive complexity 26 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"3946bc246b33b0088734e8d115c99dfe8fc91cb7bc9cff9dd47a98fcd7b0e925"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RejectRevision (cognitive 26): WordHandler.RejectRevision has cognitive complexity 26 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"b150098348bddd54e3745344f530408f86663611a2a2b36519b7c381824df5d3"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.ApplyBatchItems (cognitive 25): CommandBuilder.ApplyBatchItems has cognitive complexity 25 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Batch.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca4314adc76e83abacb12b08f244df7376a93800806530d9e7e8957cdbed8d86"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.CheckPositionOverlap (cognitive 25): CommandBuilder.CheckPositionOverlap has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1851}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a08824c0f7f6ec3c547f476d0492a8a7b4a0bf24227c2f49ecb1b73bbc8010"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.FilterSelector (cognitive 25): AttributeFilter.FilterSelector has cognitive complexity 25 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea227ae8d41157750a9c56d828f8b8f15ac57d624dfa495f582e4956fcc2e767"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.RegressionInputs (cognitive 25): FormulaEvaluator.RegressionInputs has cognitive 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":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"5caa9d2c420d479aa521eaa78aa180601fbe30a2b01c105fbfc079ef3eba7edd"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.TrimControlWordDelimiterSpaces (cognitive 25): FormulaParser.TrimControlWordDelimiterSpaces has cognitive complexity 25 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3679704d54e774e6b8ccd5f5fd6099523e4450701b34d99782df0b5f6e5bfd"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageSource.TryGetDimensions (cognitive 25): ImageSource.TryGetDimensions has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ImageSource.cs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f94daa05c1ce17b720cb1d80c534a198de956691b2fb20452fb1692e8f8128"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.SanitizeXmlText (cognitive 25): PivotTableHelper.SanitizeXmlText has cognitive complexity 25 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"050ad5bcfb3d1b8f1949a5602f7490fd6f611faae745717c837f9a17d6268ff2"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.FindDataPathInHtmlExact (cognitive 25): WatchServer.FindDataPathInHtmlExact has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0cae0f98d13521eccd5040407ab4dbfee95afd7cbf3d38233dc625f75c01dde"}},{"ruleId":"D2","level":"warning","message":{"text":"WordNumFmtRenderer.BuildCjkGrouped (cognitive 25): WordNumFmtRenderer.BuildCjkGrouped has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordNumFmtRenderer.cs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23bb2f5a6e2576766e8f0e2a2b6d2f2d8806c53fd63e776dccb5ada389488a7"}},{"ruleId":"D2","level":"warning","message":{"text":"WorksheetBloatFilter.ProcessRow (cognitive 25): WorksheetBloatFilter.ProcessRow has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WorksheetBloatFilter.cs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f5b236115d88d48c28e0da508ea8976a465480bf2f0023f12113179c91553a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildSparklineMap (cognitive 25): ExcelHandler.BuildSparklineMap has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b89961baafb32a07cf9eb10a94a01869ac65aec7ecf94ba76c1984b4ef498fe"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildTableStyleMap (cognitive 25): ExcelHandler.BuildTableStyleMap has cognitive complexity 25 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2007}}}],"partialFingerprints":{"codehealthFindingId/v1":"683c760be609083524650cf3fdb7e13d2856f51ca155636d76f16ae7dd894837"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildAlignmentCss (cognitive 25): ExcelHandler.BuildAlignmentCss has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2557}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac325cd9fd41f0afa8cd28b023bc568a8c437aad17513bb1f2165e13a0488cd5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddDiagramNative (cognitive 25): PowerPointHandler.AddDiagramNative has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Diagram.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b7bfc123992504a0f9ded73b4c542c4c0214ebbb3bf02ab23e66aca92e4b04"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ParseOutline (cognitive 25): PowerPointHandler.ParseOutline has cognitive complexity 25 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"13e349143bceec8e372c5cc3261d447e91e77950e20ecdb7bb764bf89c124173"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitPresentationProps (cognitive 25): PptxBatchEmitter.EmitPresentationProps has cognitive complexity 25 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1729c40f14704f511aa593c42e4798448ebc5d61bd7e3b28812bf4b183ed89"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitPicture (cognitive 25): PptxBatchEmitter.EmitPicture has cognitive complexity 25 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Media.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"939b3aebda6a8cfb79dcc719852b3daf5da5114779146425724058829e789bf9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveSpacingFromStyle (cognitive 25): WordHandler.ResolveSpacingFromStyle has cognitive 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: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"54ff549e873bce81e88730f61d134f9a58818f6a837884256ee049138b94e618"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ReadSdtExtraProps (cognitive 25): WordHandler.ReadSdtExtraProps has cognitive complexity 25 (threshold 15). Of this number, 23 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":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3632}}}],"partialFingerprints":{"codehealthFindingId/v1":"64053b935e42d4c61293c438b2fb7f42cdea5e08b9dba0500051d36300a014b6"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetTocPath (cognitive 25): WordHandler.SetTocPath has cognitive complexity 25 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"5144f3d7944b7bdf400474e4abfc5ee8b69601ce9f888e590c77deb9b6c64fce"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TrySetDocDefaults (cognitive 25): WordHandler.TrySetDocDefaults has cognitive complexity 25 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.DocDefaults.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"643125090459b2b0b510f44de4f52fef6dc959dcf1d4a460788e79751de585a8"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AcceptRevision (cognitive 25): WordHandler.AcceptRevision has cognitive complexity 25 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2919a86d7e5f418093130b68ca408d67683899a129d4d326e581843049f660"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EnsureUniqueMoveRunIds (cognitive 25): WordHandler.EnsureUniqueMoveRunIds has cognitive 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":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":2301}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee49aaddb11ce4e38f4ceb2cd329d930d84493f41f87974082306182e10c6ae2"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.ExecuteQuery (cognitive 25): ResidentServer.ExecuteQuery has cognitive 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3b57a0b5ffb697b6e594d6bc69019fcb4df850d01d33ff04558a341c7560024"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildWatchCommand (cognitive 24): CommandBuilder.BuildWatchCommand has cognitive complexity 24 (threshold 15). Most of this is not in the body itself: 0 of the 24 points are its own statements and the rest belongs to one function literal inside it that branches (line 32). 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":"src/officecli/CommandBuilder.Watch.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"360c7ae7626724d4d269451902d6dcb44476c225c4c384c4c25a978ad478c0d2"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.ExtractBracketBlocks (cognitive 24): AttributeFilter.ExtractBracketBlocks has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"e57c3052df4efa7b30043d979fffab8a315c96c36ce1a0f805c9ee534a4184dc"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.StackSeries (cognitive 24): ChartSvgRenderer.StackSeries has cognitive complexity 24 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1241}}}],"partialFingerprints":{"codehealthFindingId/v1":"662d03c89595ae7a2a08a916bf1ec096069c92193c233e43e4708951c46b883a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtendedPropertiesHandler.PopulateExtendedProperties (cognitive 24): ExtendedPropertiesHandler.PopulateExtendedProperties has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExtendedPropertiesHandler.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"acb079a826130158f15bb08256199dc6ee93442107c9d703726393cecfc3873b"}},{"ruleId":"D2","level":"warning","message":{"text":"FontMetricsReader.ReadFamilyNames (cognitive 24): FontMetricsReader.ReadFamilyNames has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d5dac4489b9f08e14772906dfa3e6c4c9667ffdaa97837534a5ed77b90d652b"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalOffset (cognitive 24): FormulaEvaluator.EvalOffset has cognitive complexity 24 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.References.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b562f690274680b6af722cdf9dd96c94d03764177bbc0747ac09da439180d85"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalUnique (cognitive 24): FormulaEvaluator.EvalUnique has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"6141cbbd5048cf756444103d8411bc36993f01a2e3a29841cd5f3bffab84172e"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalToColRow (cognitive 24): FormulaEvaluator.EvalToColRow has cognitive complexity 24 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"4068cfa0decdb44541e5e12154aa90e4b0fd66f745f6259a7253685cad038962"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildCacheDefinition (cognitive 24): PivotTableHelper.BuildCacheDefinition has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"d435fe3cf745be9eb034c80b3c56c8db3f04dd4a7eaa3bcb99518da9fcb58451"}},{"ruleId":"D2","level":"warning","message":{"text":"RawXmlHelper.Execute (cognitive 24): RawXmlHelper.Execute has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"65fb1f4dff6fc50173133ad8e6f0b0f77797fa1c4f78f7883404d4ca794ec06d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordTocBuilder.ReplaceTocFieldContent (cognitive 24): WordTocBuilder.ReplaceTocFieldContent has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordTocBuilder.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"de61769f1b090fe72667754aeb3ef4d998b4b19f5dae528f873849fbbb49fe19"}},{"ruleId":"D2","level":"warning","message":{"text":"DocumentHandlerFactory.TryOpenViaPlugin (cognitive 24): DocumentHandlerFactory.TryOpenViaPlugin has cognitive complexity 24 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/DocumentHandlerFactory.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f1d4003c4384fc1c08ad1c7212f4da8e745bce6d6a790c03574afeddc574a3f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RemapChartExFormulasToHostRange (cognitive 24): ExcelHandler.RemapChartExFormulasToHostRange has cognitive complexity 24 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Chart.cs"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"a737db8fed7d0744a25723777e4ff3ed54e71b187132849247c706763ccaf17a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddOle (cognitive 24): ExcelHandler.AddOle has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"31bbe76007391cc3e53709a5711c3e3c65f357e242796b4aed42f6806050c4fd"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildCommentRunProperties (cognitive 24): ExcelHandler.BuildCommentRunProperties has cognitive complexity 24 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59b0642450c0b40cd48225c2d2e0d9e75a52d89d143480d109fc1fba036159a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CfRangeExtents (cognitive 24): ExcelHandler.CfRangeExtents has cognitive complexity 24 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2124}}}],"partialFingerprints":{"codehealthFindingId/v1":"91cf07759bfea26e3986e916e86f4488fc55c32baed68ceefb3a7d44eed5617b"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.SyncTableColumnsAfterColInsert (cognitive 24): ExcelHandler.SyncTableColumnsAfterColInsert has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5035153799c3381121684fe27e627cccdab8ba4432c87387d8a57e4d8f29fa9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ParseCellSelector (cognitive 24): ExcelHandler.ParseCellSelector has cognitive complexity 24 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Selector.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa22feee3952b74d40094f5dd47479ccf79de5fbd9866f5b16f37e5a561b3486"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetPictureBlipPassthroughChildrenXml (cognitive 24): PowerPointHandler.GetPictureBlipPassthroughChildrenXml has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4331}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b3f00b81cd713734033952e73e122a2e0a1f1480bc26a19da306fd48dbea2f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetShapeBlipTileXmlWithOrdinal (cognitive 24): PowerPointHandler.GetShapeBlipTileXmlWithOrdinal has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4758}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ad0c873b5da39c7a578aaae5cb7ff4a95137e7d3303a74e29f19d3938cd3ad"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddEmptyGroup (cognitive 24): PowerPointHandler.AddEmptyGroup has cognitive complexity 24 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fe1213d6e6119912b1a25d5a4839c41abe00b9dc699c27347558506dbccf4e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.PathToSvgD (cognitive 24): PowerPointHandler.PathToSvgD has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d631423a14633c51d00de43527c9de44c3a3c579118911b87509b8548d790cf"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.FindUnsupportedCombinator (cognitive 24): PowerPointHandler.FindUnsupportedCombinator has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f5ec08bd67e83b9487d1edc6a77864cdd7c7873bdf16bc821633dc2c4e3224f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderConnectorSvg (cognitive 24): PowerPointHandler.RenderConnectorSvg has cognitive complexity 24 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c51db84f03eb7e5570437135bcb541b088c157a2e8c1649324d38d080d3de93"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CustomGeometryToSvgPath (cognitive 24): PowerPointHandler.CustomGeometryToSvgPath has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"1def611e4cdc132334d078ccb6465051763c3dc9fef8d56086accb55d8f16e0b"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitWordWithWarnings (cognitive 24): WordBatchEmitter.EmitWordWithWarnings has cognitive complexity 24 (threshold 15). Of this number, 18 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":"src/officecli/Handlers/Word/WordBatchEmitter.cs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6018aa46b8fa9d5fa476daab64030aa58cc08fb8fa1f4ce0f6bebd9111f76c5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderHeaderFooterBody (cognitive 24): WordHandler.RenderHeaderFooterBody has cognitive complexity 24 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"6afdc62a80a3c48634a31659cb8757fc53da55a26d231e71ddd4ffe5f4963ae3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AppendW14ReflectionBlock (cognitive 24): WordHandler.AppendW14ReflectionBlock has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":2147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1672a5527b69f46ea1c0f0f5d135a9262571a25c4b10b80d609d99f36c287e1c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderWrapNoneOverlayImage (cognitive 24): WordHandler.RenderWrapNoneOverlayImage has cognitive complexity 24 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcc547978812a39961c5c911dbe094bb052d3a910d210745cc82cef2a1eb9f22"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ComputeAnchorWrapFloatCss (cognitive 24): WordHandler.ComputeAnchorWrapFloatCss has cognitive complexity 24 (threshold 15). Of this number, 23 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2b9fd10d1ee24a8ce8b68aa48a534bebab7c012995e5c5c013be38e5d8f23fb"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RemoveWithTrackChange (cognitive 24): WordHandler.RemoveWithTrackChange has cognitive complexity 24 (threshold 15). Of this number, 23 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":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f756bc559e048f7eec31700f8ea8fae7bdf10a23f57235e2d575c2a49a5ba0d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BodyToNode (cognitive 24): WordHandler.BodyToNode has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3741}}}],"partialFingerprints":{"codehealthFindingId/v1":"b04937b60aaf2b90e9e495274edccbf204f537d2920e93c20867b9ba2066e764"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ParseBorderValueDetailed (cognitive 24): WordHandler.ParseBorderValueDetailed has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"784ddb8aea4f3c771bdc90a6597b7e8ebe1f7f27efea3674fb5cebd6db772c27"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementBookmark (cognitive 24): WordHandler.SetElementBookmark has cognitive complexity 24 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"df94d5ff0749082e657ba26505323bb435d345ca38a6627d0fece4972c7ea36f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TrySetFootnoteEndnoteNumProps (cognitive 24): WordHandler.TrySetFootnoteEndnoteNumProps has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.SectionLayout.cs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0df03b1bdf51eeb22605374ada97fd05d8310bc5b3d764e80e197deb9f72c5d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetParagraphTextWithFormFields (cognitive 24): WordHandler.GetParagraphTextWithFormFields has cognitive complexity 24 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"af40e61b15125a752bd5a265b541a9e8decae68784cd735ac91f2f41387249f5"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 24): (anonymous) has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5788a04a592963db927684a35647c525f8a3e4d1f67e3147064b5eabd09205"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildAppliedSuffix (cognitive 23): CommandBuilder.BuildAppliedSuffix has cognitive complexity 23 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"69083e4d033425ecf7c7abcf0b2386a2286b1c61b89084a9ae031e5ab5e8f504"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.BuildDefaultRunPropertiesFromCompoundSpec (cognitive 23): ChartHelper.BuildDefaultRunPropertiesFromCompoundSpec has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2fd1a69e0f0dc08ddb7d4a884b9343140db618d4dbe18e71f0ab48e69780a89"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ReadSourceData (cognitive 23): PivotTableHelper.ReadSourceData has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"575ace4703748b30ba29c8322f4b4e81087e4abbcc37a05ee51356029f6bbd8a"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateMerger.ScanUnresolvedDocx (cognitive 23): TemplateMerger.ScanUnresolvedDocx has cognitive complexity 23 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TemplateMerger.cs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"d45ee137522925478f61b4adc8c8005fc3e688422a2938c2a1118694ceded06b"}},{"ruleId":"D2","level":"warning","message":{"text":"ThemeHandler.PopulateTheme (cognitive 23): ThemeHandler.PopulateTheme has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ThemeHandler.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"24db14290917a2a4b8df9dfd037e46837fe51c6a6c42a1b2e8281812df347bf2"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedAttributeFallback.TrySet (cognitive 23): TypedAttributeFallback.TrySet has cognitive complexity 23 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TypedAttributeFallback.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a072121ceba50c1e8acad26117cf7a1d748fedd388a5456744daf1e5fcb9cb2"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.RunAsync (cognitive 23): WatchServer.RunAsync has cognitive 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf2da827dbf1af346106bab310d8597cd904c5ef2928ea36b85b1c81f38c9a4"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.HandleClientAsync (cognitive 23): WatchServer.HandleClientAsync has cognitive complexity 23 (threshold 15). 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":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1866}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a02709f789b0e661eb4f141c491bef3bcacb8ce259a264e37a644e5b821cfd"}},{"ruleId":"D2","level":"warning","message":{"text":"WorksheetBloatFilter.FilterCore (cognitive 23): WorksheetBloatFilter.FilterCore has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WorksheetBloatFilter.cs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe0ce0136d593c5d47f8ff6412248669a3c7cfe9c220455d5ea80e9f10b6fe6"}},{"ruleId":"D2","level":"warning","message":{"text":"XmlTextValidator.FindInvalidChar (cognitive 23): XmlTextValidator.FindInvalidChar has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/XmlTextValidator.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"27456b4a6550d780d31749e885d6aaf125671d33a19816ba450b2ef433e99dbc"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitSheetSettings (cognitive 23): ExcelBatchEmitter.EmitSheetSettings has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"0712a15f234a880059278eb36f5dac7487e7ae3a0963425c405a98d2996399cd"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.EvaluateCellOverflow (cognitive 23): ExcelHandler.EvaluateCellOverflow has cognitive complexity 23 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.CheckOverflow.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"864cfee89fafcc68663c102af2e02d9571902b24dc1159373a61bcbc13fbf6f4"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetDumpOleSlices (cognitive 23): ExcelHandler.GetDumpOleSlices has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e1c4c5b9d9f12faf988ad9d6b07cbc991534f16951fe770048c972235cd10e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TrySetShapeEffect (cognitive 23): ExcelHandler.TrySetShapeEffect has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"f40dfa31e11df54ff4c084639ca47e07976ff19ee530a38fa797023cf07d139e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.DescribeRowColumnsHint (cognitive 23): ExcelHandler.DescribeRowColumnsHint has cognitive complexity 23 (threshold 15). Of this number, 21 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":"src/officecli/Handlers/Excel/ExcelHandler.Query.RowWhere.cs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"7608648b1ccd6a255c527c677b159fe536611c429b21de7ab1f83e214264a429"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.Raw (cognitive 23): PowerPointHandler.Raw has cognitive complexity 23 (threshold 15). 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":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfff8b476a5008e87f7ef4fc71c27e4c9358825151fc37b60e2328970aea117"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReHomeCollidingRel (cognitive 23): PowerPointHandler.ReHomeCollidingRel has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2163}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d01fa2c830da8d7ba57c18a8a0b0d40c92a676f4013e56a180f123874ec3f1a"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetTimingAudioRels (cognitive 23): PowerPointHandler.GetTimingAudioRels has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3165}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7dee9a4e1f0d5d33ce9e5b0ec5d9a9eb40dfa191d238c6181607c2e8ddd4d2"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AutoUnprefixMorphNames (cognitive 23): PowerPointHandler.AutoUnprefixMorphNames has cognitive complexity 23 (threshold 15). Of this number, 21 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":3093}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae303d82d4f77aba846c94ff7fa9a1ed997e7d7f3e8d86e1cde3fcac5009e73"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyBevel (cognitive 23): PowerPointHandler.ApplyBevel has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Effects.cs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c3923aa003dc57b321764847b00f0796f36594b00113e266ca80e8568fc0dc"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyAdjustHandles (cognitive 23): PowerPointHandler.ApplyAdjustHandles has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Geometry.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"26dbf5bb52d20be358ad70cb943bf7294d559ea39928aeef5196e6f3b672dbc6"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderSmartArt (cognitive 23): PowerPointHandler.RenderSmartArt has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2893}}}],"partialFingerprints":{"codehealthFindingId/v1":"8243ec1cc435e28adab39c44ae4285074ccbbb5a6cf3bc83f4a64bc7de414382"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReconstructCustomGeometryPath (cognitive 23): PowerPointHandler.ReconstructCustomGeometryPath has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3418}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa7049b253cf72a7ae331c0a988154559bed5d300d81a9b09db998fe4b7acfb4"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitConnector (cognitive 23): PptxBatchEmitter.EmitConnector has cognitive complexity 23 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 2 belong to 2 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f208a722150e2e1754e4ee98602dcfefc48c660c5d494a5c41110ff4fc4e411"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.Add (cognitive 23): WordHandler.Add has cognitive complexity 23 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04a838a92dfc9a9ecb3deb035bded309c584be05ec3a269427f9411ff061c2d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.IsContentSpanBookmark (cognitive 23): WordHandler.IsContentSpanBookmark has cognitive 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 into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Text.cs"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"703eb1c806957f4fef1cba5ad3a79408d0ddb96fe3048ddca85dbbe76303ab56"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderHeaderFooterHtml (cognitive 23): WordHandler.RenderHeaderFooterHtml has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":2023}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b66c95808f12817d9f9cb2320a8ac09ae6bd14968d48f5d902fde773ec98ea9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderHyperlinkHtml (cognitive 23): WordHandler.RenderHyperlinkHtml has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":1487}}}],"partialFingerprints":{"codehealthFindingId/v1":"01006e30dd015eef6de2670d87ecde87c73fbd823605a333cef527c1a9158d92"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ValidateAndNormalizePredicate (cognitive 23): WordHandler.ValidateAndNormalizePredicate has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"45237e340c9698f7c4e0d59f32bfe8ba330f2d616782c340a76b3cf2045aa9e6"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementMPara (cognitive 23): WordHandler.SetElementMPara has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4806eae467ef0ca0710a296c0f3a548c1e5fc70a8fc183f6a602a2d5052ceb9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementOMath (cognitive 23): WordHandler.SetElementOMath has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"708a4872f02fe53fe2d587c46780f67cd44ef8a462b12cd4c3c08942f123e763"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.ExecuteAdd (cognitive 23): ResidentServer.ExecuteAdd has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2286}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7e2c05398846db35920aabffe36d54008ca05699f30079f92160bd2284659b"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 23): (anonymous) has cognitive complexity 23 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"379d7ed0bf1428be0fcd49ec2849683e261d5ff38234f0dd93cc121c1a2972b0"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.TryResident (cognitive 22): CommandBuilder.TryResident has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f9f6584ee2e0dbde15b7839febdaa018be1a720c21f2f29d461d8cb7382445"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ReadReferenceLines (cognitive 22): ChartHelper.ReadReferenceLines has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1824}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d04e2f23c75ecef7dba93acf6ab79a752e2e6579ac6dac835e942090736d56"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.RenderLine3DSvg (cognitive 22): ChartSvgRenderer.RenderLine3DSvg has cognitive complexity 22 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5296}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ff6eeb3c8c8b333d068cd628799fe8b78467d424cfb3d8628f2f17d735e86a"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.GetPopulatedColRange (cognitive 22): FormulaEvaluator.GetPopulatedColRange has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"c28ed43d9b2bbabeda15af381f8cb2673cf589eefa96caf94ba481c7e5459c96"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.DbRowMatches (cognitive 22): FormulaEvaluator.DbRowMatches has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":2064}}}],"partialFingerprints":{"codehealthFindingId/v1":"8583e3467249b9615cf90cbc5e99a8e9fc513071ba0920ff9d46fb5fd4126476"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.NumsA (cognitive 22): FormulaEvaluator.NumsA has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"89de7a8eb38c9471ee70a3d371068fe89daef6e23de90b3e0b88d01287ec0f7e"}},{"ruleId":"D2","level":"warning","message":{"text":"ParseHelpers.SanitizeColorForOoxml (cognitive 22): ParseHelpers.SanitizeColorForOoxml has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ParseHelpers.cs"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"235bbdcf32f4f8c8c456e2bdf3e5d8772aa476e2f22ec952d1fb16a33610ef18"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildDateGroupBaseCacheField (cognitive 22): PivotTableHelper.BuildDateGroupBaseCacheField has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2de5425dc8ae4304493486f9318c1662677b62ddba4337202914d9770d8e7e5"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginProcess.Run (cognitive 22): PluginProcess.Run has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginProcess.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ffc6d123cac2006cdb1768a688de8b21d9f3fe75a37dec9e7ab4324caf319e7"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateMerger.ReplacePlaceholdersInDocx (cognitive 22): TemplateMerger.ReplacePlaceholdersInDocx has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TemplateMerger.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dc8bd1604884ada613b7dabfa81794a23279bfc40d7d87ff36647b0167cec4a"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.ComputeExcelPatches (cognitive 22): WatchServer.ComputeExcelPatches has cognitive complexity 22 (threshold 15). 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":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1707}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c1841268ccde348c43d82eea217f39cd2450a3946263c32e08c51d326e0edc"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RunToNode (cognitive 22): ExcelHandler.RunToNode has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"403602d995c82d88ca95896e84f9bdd009a285b1d5a94f6d688592ea1d61d46d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ShiftColumnsRight (cognitive 22): ExcelHandler.ShiftColumnsRight has cognitive 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1220}}}],"partialFingerprints":{"codehealthFindingId/v1":"f979081a48754358bfc4cf3a8569f875acdc47bbc65371c7562dfdfa81f408ca"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ValidateTableIdentifierUnique (cognitive 22): ExcelHandler.ValidateTableIdentifierUnique has cognitive 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c46740f6f5d05f63e177880705b7326735ba7de68b0058a18643c4d1c257324"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetConnectorStyleXmlWithOrdinal (cognitive 22): PowerPointHandler.GetConnectorStyleXmlWithOrdinal has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4699}}}],"partialFingerprints":{"codehealthFindingId/v1":"455a92b4b72cf068818320fa99b89e6cc239a16af65673a2bf9423d03b3b9d6e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.EnumerateChartBuildSteps (cognitive 22): PowerPointHandler.EnumerateChartBuildSteps has cognitive complexity 22 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"ace85da36dedb140a200b63447e5cda9c93b6f8c82872a53e2a8c9bafefed3b8"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderSlideElements (cognitive 22): PowerPointHandler.RenderSlideElements has cognitive complexity 22 (threshold 15). Of this number, 17 points are the body\u0027s own statements and 5 belong to 3 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba41e7e47f1186c28628b337aa48b8be9d993045adff465b03c5d15a1aae52d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.EffectListToGlowCss (cognitive 22): PowerPointHandler.EffectListToGlowCss has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1204}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e22e73507ebc536a82ad1a62a44caa73d1a23258cc52e2e7de10151fa2a68e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.EmitEffectiveFromResolved (cognitive 22): PowerPointHandler.EmitEffectiveFromResolved has cognitive 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":"src/officecli/Handlers/Pptx/PowerPointHandler.StyleList.cs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"f98d1737a91fd4d7982aaa8b13db65211fa5a69da97b73aeb9d5f4541e6f5c58"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitAuxiliaryPartsScan (cognitive 22): PptxBatchEmitter.EmitAuxiliaryPartsScan has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.AuxParts.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5aa0677c367a6a69977b71bccb2fcb15ed3a7bd73ea1710a2bcac76e08f19af"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.ReorderLvlChildren (cognitive 22): WordBatchEmitter.ReorderLvlChildren has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"08c44039277bd22ce99b8fbfec1f695bf9a9bc8e73cd47b5ad5a069e3eddd19f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EmitCellSdt (cognitive 22): WordBatchEmitter.EmitCellSdt has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":2822}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ae27d6302eb326256860e2c75f1b8f3f2933fe70f8f7370c6c80a85a6aba0b"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.FirstContentHeaderFooterFlags (cognitive 22): WordHandler.FirstContentHeaderFooterFlags has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":2211}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f9b6369922c426cd62a86d3c82c23ef78aa4dfb8151bb027a7bb72b9f683686"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElement (cognitive 22): WordHandler.SetElement has cognitive complexity 22 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd03d91d65efa68421c41d9d22a9917ba7feba98c3ff4b00dc415de8b87262f4"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetElementTabStop (cognitive 22): WordHandler.SetElementTabStop has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1700}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae4c86a74ce1db2a1f37696f4786377d4f1e75d240f14d4f35efb6a0c2ad5445"}},{"ruleId":"D2","level":"warning","message":{"text":"SchemaHelpFlatRenderer.CollectPaths (cognitive 22): SchemaHelpFlatRenderer.CollectPaths has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Help/SchemaHelpFlatRenderer.cs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d1d1198d3a9234313c9d53b29b86fadcfbf64eb30bed9c5126e5cde2a8ab490"}},{"ruleId":"D2","level":"warning","message":{"text":"LenientStringDictionaryConverter.Read (cognitive 21): LenientStringDictionaryConverter.Read has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BatchTypes.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf9cd3704569fcad68dc75a2b628ea052a40cb54ac37c82c6c056e6fbd518d28"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.Parse (cognitive 21): AttributeFilter.Parse has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"4787dc7bc821760eb498db34f84e22c711ba01adfff54eef5a57daeea5cb3cfe"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.IsContentFilterPath (cognitive 21): AttributeFilter.IsContentFilterPath has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7e71f5e64ec77a1649d1f8ab1d5c259f37034150691f5540e5485b52153a16"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ParseNumber (cognitive 21): FormulaEvaluator.ParseNumber has cognitive 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":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"a035c849f6e4ccedcba29e923b6f9b19f099d67fce8d5500b5411faf3305af4d"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ActualActualYearFrac (cognitive 21): FormulaEvaluator.ActualActualYearFrac has cognitive 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":"src/officecli/Core/Formula/FormulaEvaluator.Securities.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc5113f57676fff84ab8d4c9b0aa1554c14cab087bdde1ee385bd94dc04acd3"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatHandlerSession.Dispose (cognitive 21): FormatHandlerSession.Dispose has cognitive complexity 21 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"87b17a6850e7c0c2197682c312e71bfec4024bb3f1b77744575a103b16c66749"}},{"ruleId":"D2","level":"warning","message":{"text":"WordPdfBackend.ParsePages (cognitive 21): WordPdfBackend.ParsePages has cognitive complexity 21 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47e7fa771e4b728cbacf3d4b2885120df36e646d353bbfe4f9ad2ad031e17a7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddPivotTable (cognitive 21): ExcelHandler.AddPivotTable has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":1655}}}],"partialFingerprints":{"codehealthFindingId/v1":"5caad49d3fb3aea7c2cf0f7d8f94f1dde6d18e6e08dfef171939f922ef143557"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AnchorToEmuRect (cognitive 21): ExcelHandler.AnchorToEmuRect has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.DumpSupport.cs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"f57330cb67a6e22605919acad852fed39a1bf45a286fb913c71e388ff3ea80da"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.FillUnknownDottedProps (cognitive 21): ExcelHandler.FillUnknownDottedProps has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.cs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce25c1bbafbecce0877e60818888429460da62f88bd09b67e6f5b5f94c16b69"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TrySetShapeFlip (cognitive 21): ExcelHandler.TrySetShapeFlip has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b02d2938035d13178819b25658b8538ce61c86191621008f84cbdf4916903e9"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddRow (cognitive 21): PowerPointHandler.AddRow has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"535d278dc678376db97e21abe436f4a5f05b33169ce489eac71a66ae85f9b520"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.MutateBackgroundImageFill (cognitive 21): PowerPointHandler.MutateBackgroundImageFill has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a4584872dd35a51dc410cc6a2201be6c3bcb2d8aec4591495710247e8a7984"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetAdvanceTime (cognitive 21): PowerPointHandler.SetAdvanceTime has cognitive 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 into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Transition.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e03891906d55520eedd4c3f7cc5ae04bbaf84a981b5837de1611ba3e16989b6"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetDefaultPlaceholderPosition (cognitive 21): PowerPointHandler.GetDefaultPlaceholderPosition has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e4fab41a7146f3ce525665fe5f32b7b9294beae51eebd8d03a8b0c531863d1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AggregateTableOuterBorders (cognitive 21): PowerPointHandler.AggregateTableOuterBorders has cognitive complexity 21 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3473}}}],"partialFingerprints":{"codehealthFindingId/v1":"337208d86a39872bf4f6b79c33dfb03a485376883f55810c5bd8f580df20481a"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveInheritedDirection (cognitive 21): PowerPointHandler.ResolveInheritedDirection has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3565}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba18693e6a8f567c64f77910a04963c85c9b638c54bba8741dd9086fa0269ffd"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderInheritedShapesSvg (cognitive 21): PowerPointHandler.RenderInheritedShapesSvg has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ecfe5a5996afc138d4ccfd51d6b57b170e7b4a7359d00e25367cad101f73116"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitPlaceholder (cognitive 21): PptxBatchEmitter.EmitPlaceholder has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c3eb67baefe2b913f6cd8ed137a88996587e86d07b6321751a7fc31f76fbabb"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitGroup (cognitive 21): PptxBatchEmitter.EmitGroup has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"349cd1b27af831725ebe61cb29c94d4584bbaa91aac00c9246fee90324ca0a91"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.HeaderFooterHasContent (cognitive 21): WordHandler.HeaderFooterHasContent has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":2234}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0b9371baac6d08545725bd07668b7b8742d8ec0862e8165bad08ad80f43222"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveTabStopsFromStyle (cognitive 21): WordHandler.ResolveTabStopsFromStyle has cognitive 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afbfe8b015544d2818bbd7dcb1f2a7581dd4de61756d34ea3d1288c0211c34f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetCjkFontFallback (cognitive 21): WordHandler.GetCjkFontFallback has cognitive complexity 21 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":3325}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f1cec4830697a6c0bcaa5757f5db2349df0c8ee644b7a6c0100f404dcc7d4b"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildListMarkerCss (cognitive 21): WordHandler.BuildListMarkerCss has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Markers.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"0219f4d03105e97a4aea719a0e944bda60590a18de02c937f5f760edc08273e3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ParseTableLook (cognitive 21): WordHandler.ParseTableLook has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a9f416eac8ebe733e320ba54772d3c5fcd0e3c36378066818927cf7fc377fdc"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BookmarkStartToNode (cognitive 21): WordHandler.BookmarkStartToNode has cognitive complexity 21 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1773}}}],"partialFingerprints":{"codehealthFindingId/v1":"8224eb54a0278fd5f8b7c31817a43febf38f050306d9a5cfa50b9fb533113218"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ParseSingleSelector (cognitive 21): WordHandler.ParseSingleSelector has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Selector.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2d3d3b35c7660ff162f75caeb6fa3ca35cfa88ba1dc42793eb3ceca98b9d7a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetRevisionsBySelector (cognitive 21): WordHandler.SetRevisionsBySelector has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd6d146038486b357bd3b4844445c4ccd47c88e3b0fdeea1395167fdd70d319"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MatchesFilter (cognitive 21): WordHandler.MatchesFilter has cognitive complexity 21 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"24cd86a5f07ed7caf7cfff4eacc6c49d3faf375fa0559805850d5b82e80f04a7"}},{"ruleId":"D2","level":"warning","message":{"text":"ensureCliBinary (cognitive 21): ensureCliBinary has cognitive complexity 21 (threshold 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":"sdk/node/index.js"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed96efabf3766231cd4c927d516e0185da7c3cc04ef74d6e35ea48fd8316522d"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.TryStartResidentProcess (cognitive 20): CommandBuilder.TryStartResidentProcess has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"a39d3b1acc93b118bcab56f214a54e6c17479a1fa92190454197472120d281f6"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.DetectUnmatchedKeyValues (cognitive 20): CommandBuilder.DetectUnmatchedKeyValues has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1467}}}],"partialFingerprints":{"codehealthFindingId/v1":"1807262df1fe13754ba2d03ad3e06f3562720f9769253daf4d8985a4535dbfa8"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.SuggestPropertyWithDistance (cognitive 20): CommandBuilder.SuggestPropertyWithDistance has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"e010ce7b669476fe709efbfe134818bf7300e42df5792e00e6b30bf27528eb2c"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.GetSelectedAction (cognitive 20): CommandBuilder.GetSelectedAction has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.GetQuery.cs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"fec757ecf76843e3f007464bf60a4b6629a7ec04d047761eb707974aa723f864"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.BuildFillElement (cognitive 20): ChartHelper.BuildFillElement has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4aec794eb92a776bdcb7294f00cf63e36c42456e9410f128fbdf6873d7478e9"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalTextBeforeAfter (cognitive 20): FormulaEvaluator.EvalTextBeforeAfter has cognitive complexity 20 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1186e62499490ae1ffe17b46225d7b13c193b8deec20c5553dd80be990386e"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ApproximateMatchVector (cognitive 20): FormulaEvaluator.ApproximateMatchVector has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1105}}}],"partialFingerprints":{"codehealthFindingId/v1":"14662cfe0d7940b997797197add96ae537387fa3654e14b95d53d3212fe51d99"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.CompareValues (cognitive 20): FormulaEvaluator.CompareValues has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8701ca5d7792bbaf50c6b02aa7c2d15e8e2f6313d83f43d808a503cb9a3bf5cc"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalMdeterm (cognitive 20): FormulaEvaluator.EvalMdeterm has cognitive complexity 20 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c7ae727a5fb2c6b7a7060b913e6b1bbd0d5014e3b451aaff66f9a68cfeec19e"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericXmlQuery.ElementToNode (cognitive 20): GenericXmlQuery.ElementToNode has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/GenericXmlQuery.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22bf7b1649d1be9732a0f25810a90b34cbd9d3fcffe5ecb11337ef5a0893655"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ReadFieldValueIndexFromCache (cognitive 20): PivotTableHelper.ReadFieldValueIndexFromCache has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"c33e060b9e48b9b2843ca52cdd6cfbe1ede02eff548489849026803c2e987291"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildCacheField (cognitive 20): PivotTableHelper.BuildCacheField has cognitive complexity 20 (threshold 15). Of this number, 16 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":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecbf14173930cb5c351293606b2bc940743ebc97eccfc421641703803bd611d2"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ReadColumnDataFromCache (cognitive 20): PivotTableHelper.ReadColumnDataFromCache has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1922}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfbc9601d2554dcd18f8915aaba38f79d76b89ba57c1286153f2d9581e145c7a"}},{"ruleId":"D2","level":"warning","message":{"text":"SelectorCommaSplit.TopLevelIndexOf (cognitive 20): SelectorCommaSplit.TopLevelIndexOf has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SelectorCommaSplit.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1c441b02fb24a7cbc6e6b99328fc4e28f213c002463f7cabeeb5e8675123bb5"}},{"ruleId":"D2","level":"warning","message":{"text":"SelectorCommaSplit.SplitTopLevelCommas (cognitive 20): SelectorCommaSplit.SplitTopLevelCommas has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SelectorCommaSplit.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0c8545b05c7b0eaaef24de8ba7a4900ddb559eba12e85dcbcb28bb33542970"}},{"ruleId":"D2","level":"warning","message":{"text":"SvgImageHelper.TryGetSvgDimensions (cognitive 20): SvgImageHelper.TryGetSvgDimensions has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SvgImageHelper.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fbac791041fe2a6ff8c00840791f7ef7972e036569b3e413c43481b77336a80"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitValueBaseline (cognitive 20): ExcelBatchEmitter.EmitValueBaseline has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bcf20fb20cc357b311a5e78356163d9d1a27f10383f302703823057de628a06"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitConditionalFormats (cognitive 20): ExcelBatchEmitter.EmitConditionalFormats has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b1b7644d80090911efef5c4eeae02432200dcae634fb62a9d9fb3a4a51ebd76"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CommentToNode (cognitive 20): ExcelHandler.CommentToNode has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"8364a8fd500bc3554cf242d31b25c9a4abf29bb34c365dc1bbc3009af1688f5a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ResolveChartDataFromCells (cognitive 20): ExcelHandler.ResolveChartDataFromCells has cognitive complexity 20 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"44700e64d54f6cef41c5d6e214126bc46ca586be2decab49ab86233f8c956362"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RowKeyCollidesWithColumn (cognitive 20): ExcelHandler.RowKeyCollidesWithColumn has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.RowWhere.cs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5e6611628f456bd5bcca35e392d48f3e6679aba53e8577c6e85291c417561e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddSlicerDrawingAnchor (cognitive 20): ExcelHandler.AddSlicerDrawingAnchor has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Slicer.cs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"e47adfb88b0f9d1ed13a00963fd90138eec8c89aa1b0bde593d7b8930042ed8b"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ResolveChartFormulaValues (cognitive 20): ExcelHandler.ResolveChartFormulaValues has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d40248b11a42158f58b8d1a50b114e267532afd76caea7682335838ed440a6"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.DistributeShapes (cognitive 20): PowerPointHandler.DistributeShapes has cognitive complexity 20 (threshold 15). Of this number, 18 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Align.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8aa72c72b89b43dcba7e855f6bf69febe6fef369273470bf2301b939fbfce9"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AutoPrefixMorphNames (cognitive 20): PowerPointHandler.AutoPrefixMorphNames has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":3052}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9e66aa38fed016f559675b3e9381c6e145bb5d744f27d6e70b9fc3928a24231"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadSlideHeaderFooter (cognitive 20): PowerPointHandler.ReadSlideHeaderFooter has cognitive complexity 20 (threshold 15). Of this number, 19 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"da466b43d196cbc82649b001c4a54ff3706c053e6bd0a703c6915c62a60a61fe"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.LevelBackgroundCss (cognitive 20): PowerPointHandler.LevelBackgroundCss has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"478e3efdc4eab385a06783808539913c03133715758a3866b0e46a5767fb72d6"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CustomGeometryToSvgPaths (cognitive 20): PowerPointHandler.CustomGeometryToSvgPaths has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"f99cb3108c4463fe892c673741ca6384d8a5065a3e0c352666715b2d0c0e8a4f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.EffectListToShadowCss (cognitive 20): PowerPointHandler.EffectListToShadowCss has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d627e7e54b9ffd31d7a0f328e233be0dad14f2ad3b1315966d57ebd6948cf1a"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveHyperlinkTarget (cognitive 20): PowerPointHandler.ResolveHyperlinkTarget has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Hyperlinks.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"64e92b3c11babb6e8701d4916840751b0f706890f282d7fb47442fc2672620ea"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CopyFrom (cognitive 20): PowerPointHandler.CopyFrom has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1165}}}],"partialFingerprints":{"codehealthFindingId/v1":"e160a937b8f8f0f26e8d8e6f5814eaff5b11b94a10fd6119648964907db4956d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.MoveTableRow (cognitive 20): PowerPointHandler.MoveTableRow has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c8b0f5624c8f9af01019e6a6d345ab65e628aa4513598522afd4fa73aa59669"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.EnumerateShapeAnimationCTns (cognitive 20): PowerPointHandler.EnumerateShapeAnimationCTns has cognitive complexity 20 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 5 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":2362}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1c139a909624fb23761893e9dc934c6b51af12737abf8c2a475145a1ab7dc7"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveChart (cognitive 20): PowerPointHandler.ResolveChart has cognitive complexity 20 (threshold 15). Of this number, 17 points are the body\u0027s own statements and 3 belong to 3 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b8b2b4234aeb487256db6a17cc057410677099d2002c50b4b778b3519c72bd"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveLogicalPath (cognitive 20): PowerPointHandler.ResolveLogicalPath has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"d71ff91ddf18401b41b2e2b9c2fd4bc60c823bc7daa7e248a185f153e30d4de1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyMasterLayoutShapeOrSelfProperties (cognitive 20): PowerPointHandler.ApplyMasterLayoutShapeOrSelfProperties has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Slide.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"335d79486923c966509689a3df5af630c46a59b6ba52f5892182b2447c76a3da"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.GetCellCrossParagraphFieldParaOrdinals (cognitive 20): WordBatchEmitter.GetCellCrossParagraphFieldParaOrdinals has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Table.cs"},"region":{"startLine":1485}}}],"partialFingerprints":{"codehealthFindingId/v1":"19d4f3240dfe38a958a241115853a91f9ec65e1717747b17a226ef309c1eb707"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BodySectionPageGeometryTwips (cognitive 20): WordHandler.BodySectionPageGeometryTwips has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":1039}}}],"partialFingerprints":{"codehealthFindingId/v1":"fddc61a4d847ea985305584963917066df4102573eceb9aee11e62d82a40acc7"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildMovePairIdMap (cognitive 20): WordHandler.BuildMovePairIdMap has cognitive complexity 20 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"573469ee93a2eba349716a18c1795b82a95326df40acd51d9767faeed7f0cc62"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddAtFindPosition (cognitive 20): WordHandler.AddAtFindPosition has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb7a709e4442867795c5d0e894519291cc4ecb9cb9ef87384257ea0dbdbd9cc"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderChartExHtml (cognitive 20): WordHandler.RenderChartExHtml has cognitive complexity 20 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Charts.cs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b5572dae7237c54e896a99f5b19be524b96e399159d8df28d60ceeb2f06ac7"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveRunLineHeightCss (cognitive 20): WordHandler.ResolveRunLineHeightCss has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1495}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bdb4b70e72c1506ee0d73fbc0c97b2a03195160e09c9ea1a089d1a7a520d63e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveStyleParagraphBorders (cognitive 20): WordHandler.ResolveStyleParagraphBorders has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":2929}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4a8aa66786172005d520d8b488ecb61e1d13c6a5e31a955a7d769c017f08b7"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderDrawingHtml (cognitive 20): WordHandler.RenderDrawingHtml has cognitive complexity 20 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1fc1623932db16d69539337cb05d4af19b6d55d6413dea513bdd934e934012"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GuardColumnSlotAddressable (cognitive 20): WordHandler.GuardColumnSlotAddressable has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2515}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d98f4e33b83543fb0a036c91a3d10a49b4b6dc06e788db4333d4c668e738ed"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TokenizeFieldInstruction (cognitive 20): WordHandler.TokenizeFieldInstruction has cognitive complexity 20 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.SeqEval.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a70ce8f9ab30faf88ad264d9b06b8278dfbf95bd93a41f7fb99858b322fd20c4"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsOutline (cognitive 20): WordHandler.ViewAsOutline has cognitive complexity 20 (threshold 15). Of this number, 19 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":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"163731a1831665d478552292fa150345a3274c64dfc3d14e5cb5b8225cc1985c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RawEmbedBinary (cognitive 20): WordHandler.RawEmbedBinary has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":2063}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e0b32200024f9d9e764d3d3d4ca8aedff6df8bdee99dd229fbbc5e54164115b"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 20): (anonymous) has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"4871ebcd9ff34807fce9a81e1cbded0542ffeaac7b1a8c8a766a339f0e92711e"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchItemConverter.Write (cognitive 19): BatchItemConverter.Write has cognitive complexity 19 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BatchTypes.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d3af4b2256884df93bf3d91e72297a1e6c8f3cc7803c4d4fdf21e98909800b"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.ApplyWithWarnings (cognitive 19): AttributeFilter.ApplyWithWarnings has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"787b26cbb982622654a5d58a437791bb1a1cb8617725517691b77e6b02cb9335"}},{"ruleId":"D2","level":"warning","message":{"text":"GalleryIndex.LoadFromEmbeddedResource (cognitive 19): GalleryIndex.LoadFromEmbeddedResource has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExStyleBuilder.cs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac413c9b72abfa748370c609c8551df2962d8e65c5424da8e7da48ca2c8e24a6"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ParseSeriesData (cognitive 19): ChartHelper.ParseSeriesData has cognitive complexity 19 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"9649654629eceff6cb2cbcf25cd3d7b4a0ccc988c0b931ab0990228eb96f4157"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ParseSeriesColors (cognitive 19): ChartHelper.ParseSeriesColors has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e821df8db0d6259ef04b727b3ccf82f13df722a1d44c4cf5ac0e8fe809e5741"}},{"ruleId":"D2","level":"warning","message":{"text":"FontMetricsReader.BuildFamilyIndex (cognitive 19): FontMetricsReader.BuildFamilyIndex has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"95546c6fcde9a2ad4d8581a612a00fb7f2aae97f14476158a2022738dc176c82"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ParseMulDiv (cognitive 19): FormulaEvaluator.ParseMulDiv has cognitive 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 into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02ba53c7c80a12ec7925939d82acd93fe0480111eab98fcb010f429ba00851a"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalDatabase (cognitive 19): FormulaEvaluator.EvalDatabase has cognitive complexity 19 (threshold 15). Of this number, 18 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":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":2004}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cf35f8a9aa57d19734dc4fe66ecba137dad53261397bcdc9ceac7ec220fc43e"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseGroup (cognitive 19): FormulaParser.ParseGroup has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c1c20ea343d513f43b019c1620d3819e416bb67a7e85c6190539187dab70573"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericXmlQuery.ParsePathSegments (cognitive 19): GenericXmlQuery.ParsePathSegments has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/GenericXmlQuery.cs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ffb4cb2306cb6b4bd46e554a95abe7089f30e384922d1ada71ff00bbe579ef"}},{"ruleId":"D2","level":"warning","message":{"text":"Installer.MaybeAutoInstall (cognitive 19): Installer.MaybeAutoInstall has cognitive complexity 19 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Installer.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fbe65fbe50e99161766ff1314290cc20ea9a2ac7a798c80490eb834ed4539c4"}},{"ruleId":"D2","level":"warning","message":{"text":"ParseHelpers.IsCjkOrFullWidth (cognitive 19): ParseHelpers.IsCjkOrFullWidth has cognitive complexity 19 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ParseHelpers.cs"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"42d16ca2f3efdb3ce91727d52482d9400660bb137c34f8a9e78bd32bdf623160"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildCacheRecords (cognitive 19): PivotTableHelper.BuildCacheRecords has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde33aea7e2424cf1408a59865b12b76d2b5741cad9a9ec10a2538c3cfa8c571"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.NormalizeRenderedSheetData (cognitive 19): PivotTableHelper.NormalizeRenderedSheetData has cognitive complexity 19 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"536406a3e2f9ba37857d61c6d3acb6eede8f0ba1f3b3f49eb8e43c08a28f91d8"}},{"ruleId":"D2","level":"warning","message":{"text":"DumpReaderInvoker.Run (cognitive 19): DumpReaderInvoker.Run has cognitive complexity 19 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/DumpReaderInvoker.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"592a22892d490c486e9336d0a65e7894b684839b13f69b5fc0f0a74badcd40c5"}},{"ruleId":"D2","level":"warning","message":{"text":"RawXmlHelper.EnsureMcIgnorableForChoiceRequires (cognitive 19): RawXmlHelper.EnsureMcIgnorableForChoiceRequires has cognitive complexity 19 (threshold 15). Of this number, 18 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":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c07e44cd4736abdb229a0d2c4d2fe4b73c34b10e6d1eb36dc53cac0edf8438a"}},{"ruleId":"D2","level":"warning","message":{"text":"WatchServer.ResolveMark (cognitive 19): WatchServer.ResolveMark has cognitive complexity 19 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e2a945aadb8932a577df194d65c2bf4d7a90a5b44d5450c5a9c276e2229b9e2"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitPictures (cognitive 19): ExcelBatchEmitter.EmitPictures has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"6979342d6de8c040514ce0675e16f2b5be7fd4680a2618f3fd3a5376e15260c3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.PopulateChartPositionFormat (cognitive 19): ExcelHandler.PopulateChartPositionFormat has cognitive complexity 19 (threshold 15). Of this number, 18 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"e77f8a30e647082b1c546354e96300eccc9173d83ca8946116ea5b1aee1aece4"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ApplyTransform2DRotationFlip (cognitive 19): ExcelHandler.ApplyTransform2DRotationFlip has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"602e6fcc6bdce941575f3293990da97be329a7828e0c7177a8e3bf5d14182578"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildMergeMap (cognitive 19): ExcelHandler.BuildMergeMap has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a16186584a3cce62a72f545f70630afd451b76385a2b290211a544d06978430"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.InvalidateFormulaCacheReferencingSheet (cognitive 19): ExcelHandler.InvalidateFormulaCacheReferencingSheet has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f49170b8a2b674d3336775b3abfb710d818bc9afc67ed7c04e5e49f6f43caf7"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddModel3D (cognitive 19): PowerPointHandler.AddModel3D has cognitive complexity 19 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"a118f17645d7163e0e22581f4dee15e7755b37efd53aa492ab36eaaf0e2d281d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.RenderInheritedShape (cognitive 19): PowerPointHandler.RenderInheritedShape has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef82100974dd95dea9d7559d80cb47af14314309aafe84aa2e3b48a33b74478"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadHyperlinkOnClickUrl (cognitive 19): PowerPointHandler.ReadHyperlinkOnClickUrl has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Hyperlinks.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"e06a74ee83ce84bcc3a70007a473ad1c589fdfad68df7b31ae3b44302925208d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitBookmarkRun (cognitive 19): WordBatchEmitter.TryEmitBookmarkRun has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"15cbb3bec3d3f6ccd0794f4602a1443ee5446f363375b671bf55eba4703a125f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitBreakRun (cognitive 19): WordBatchEmitter.TryEmitBreakRun has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ec4ad4e18fd54449a099ba10251f3df2bca98d60ac71881eddffe96a2312b3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.EnumerateSdtContentDirectChildren (cognitive 19): WordBatchEmitter.EnumerateSdtContentDirectChildren has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":2524}}}],"partialFingerprints":{"codehealthFindingId/v1":"64eff9d7c74337ef4e161cdd952d7af7ecf421322b25051b7f47e9627245b997"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.TryEmitElementAdd (cognitive 19): WordBatchEmitter.TryEmitElementAdd has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3746}}}],"partialFingerprints":{"codehealthFindingId/v1":"f19e76f63359a86e51fba09f0448b3e1a7da1a3d01d9ce97ffec4a4b1c0c27e0"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AttachChartSidecars (cognitive 19): WordHandler.AttachChartSidecars has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f99e11657a2467487531b81963ec9f63e1f5c0d2fd5f5f882179b84600c016f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddInlinedPartsRun (cognitive 19): WordHandler.AddInlinedPartsRun has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c11eaf54da03b10e8106e95fd4873a55335f392ed69436083e862609050ab3"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.BuildShadowXml (cognitive 19): WordHandler.BuildShadowXml has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":3476}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c76bbf3dafa68678a0e880631377c361e6f51d5cf567794e18b18252e95e487"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyNoteSeedRevision (cognitive 19): WordHandler.ApplyNoteSeedRevision has cognitive complexity 19 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"63bc54be7211217052e6c8d5a3ae3f5eaded14bfbb958cfba86aa1a2d3256652"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddTab (cognitive 19): WordHandler.AddTab has cognitive complexity 19 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":3239}}}],"partialFingerprints":{"codehealthFindingId/v1":"d888342217794ca703b30c6611351875bbd76b6130b7d5699a40408b2e18e93c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyWordChartPositionSet (cognitive 19): WordHandler.ApplyWordChartPositionSet has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Chart.cs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e506e7f01b7dca05b2f1204d5f3ab948e5e0f0f2d2599090265f8059e3fa6d06"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplyTabsShorthand (cognitive 19): WordHandler.ApplyTabsShorthand has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.RunFormat.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddd64ed763baf9dabeb810e2094d5ffb5a6ea7ed0cb695b3f55dea0884a78f7a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderGroupHtml (cognitive 19): WordHandler.RenderGroupHtml has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90070970b9db396700616b308fbabe8114a539aec9fc4b6391c804ca554ce26"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveTableStyleCellMargin (cognitive 19): WordHandler.ResolveTableStyleCellMargin has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"835fd487887ff64fc3903d370d2c6f765cfde8fe7dad1a3c197ce67b6fb453d0"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CopyTableColumn (cognitive 19): WordHandler.CopyTableColumn has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2655}}}],"partialFingerprints":{"codehealthFindingId/v1":"acc83ae17ad6ddf9f577211b10cf66b0167c7f8218c425d0fa2cee36f256453f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.CollectFieldsFrom (cognitive 19): WordHandler.CollectFieldsFrom has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1375}}}],"partialFingerprints":{"codehealthFindingId/v1":"856b46f0e580652d002e1a19d5ed32d60ecced89bf30b325dbfcea174dfc48ea"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveNumPrFromStyle (cognitive 19): WordHandler.ResolveNumPrFromStyle has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"6648cd177ac763c8203913d0a090de72ba1acac7e1183b1f0cfed10d06f2f78d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetListPrefix (cognitive 19): WordHandler.GetListPrefix has cognitive complexity 19 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"47a38ff3227a327b5ca168f2c5f221f0aee42f56fe7ea00b0b83768cc345b1b1"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.HandlePingRequestAsync (cognitive 19): ResidentServer.HandlePingRequestAsync has cognitive complexity 19 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"f17eb5ab9916cd029bae2017b006b24a33b0b6d5755cfb351b3c48592352cf61"}},{"ruleId":"D2","level":"warning","message":{"text":"detectAsset (cognitive 19): detectAsset has cognitive complexity 19 (threshold 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":"npm/lib/install-binary.js"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4f84931e20b37276eb7bd40b8310b909037c12f30c428166002be5af342a40"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchItem.ToResidentRequest (cognitive 18): BatchItem.ToResidentRequest has cognitive complexity 18 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BatchTypes.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"791de935b6d0c9cbd551709fda47b05e5c531916e9603aea5a08f6d726a3e5c4"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildValidateCommand (cognitive 18): CommandBuilder.BuildValidateCommand has cognitive complexity 18 (threshold 15). Most of this is not in the body itself: 0 of the 18 points are its own statements and the rest belongs to one function literal inside it that branches (line 18). 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":"src/officecli/CommandBuilder.Check.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fdfddfea61bc30c4c154410417db86e9378fdc2fa7f05a16a64686514af876e"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildGetCommand (cognitive 18): CommandBuilder.BuildGetCommand has cognitive complexity 18 (threshold 15). Most of this is not in the body itself: 0 of the 18 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 28, 48). 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":"src/officecli/CommandBuilder.GetQuery.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac605a6cabbdd42c12def3a27f7fdbd50f5b609107616905467d517fb57c972"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildGotoCommand (cognitive 18): CommandBuilder.BuildGotoCommand has cognitive complexity 18 (threshold 15). Most of this is not in the body itself: 0 of the 18 points are its own statements and the rest belongs to one function literal inside it that branches (line 34). 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":"src/officecli/CommandBuilder.Goto.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21bd4c2141e391edfdb29d5334c907eaf0b5dcca57f9a46408d3cbc3e8c90e7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprParser.ParsePredicate (cognitive 18): ExprParser.ParsePredicate has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":1179}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a61ae3eb44c39fb209b16b6d50c1a7ee5acab82eda464f8519c104831a11dd5"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.SeriesWithNoCapturedFill (cognitive 18): ChartHelper.SeriesWithNoCapturedFill has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc4972bfc71c1f59ea509f692c1e2b283902992f515092ce5242ff228b0521d"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.AddSeries (cognitive 18): ChartHelper.AddSeries has cognitive complexity 18 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"06dc51b1ba9c98319540d5839e8cc7446409468c69af5c53b7751c60ba2b72ca"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartSvgRenderer.ExtractDeletedLabels (cognitive 18): ChartSvgRenderer.ExtractDeletedLabels has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4207}}}],"partialFingerprints":{"codehealthFindingId/v1":"679d00cd502720cd23ebb151bd7d766fa57567b53199d395d8fd83e6af00f051"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.GetOrCreatePatternFill (cognitive 18): ExcelStyleManager.GetOrCreatePatternFill has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"91e76cc6437a5063c403b829b3d74d83a8a480df0a4aadedf1c2dc1c6eaad449"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ParseUnary (cognitive 18): FormulaEvaluator.ParseUnary has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":867}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e83a3089514b9aa5ce565c20f3d4f99932af3bbb7cd817b7ae0649f99c43ea4"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalIf (cognitive 18): FormulaEvaluator.EvalIf has cognitive complexity 18 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bce76d553cf0d6af9a021ae75a42bbb92e2585c58dd1922fb95b345a1ad60d7"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.MatchesCriteria (cognitive 18): FormulaEvaluator.MatchesCriteria has cognitive complexity 18 (threshold 15). 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":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b37c46fab369c8833ee8b17b16e9360219ddd1d3a776205abb3e7e01ec6736c"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.BuildRefFromRange (cognitive 18): FormulaEvaluator.BuildRefFromRange has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.References.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"6648de6c7a3aad7b301c8d729723a5026c2cb8d3985d0c7ba39a3d5c52075713"}},{"ruleId":"D2","level":"warning","message":{"text":"ParseHelpers.ValidateXmlText (cognitive 18): ParseHelpers.ValidateXmlText has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ParseHelpers.cs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc53a9a92158b418dbbcdb9a4822159d3e1dc15a834092e79ea91c0098bfb392"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.BuildAxisTree (cognitive 18): PivotTableHelper.BuildAxisTree has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1513}}}],"partialFingerprints":{"codehealthFindingId/v1":"02dcee080598efc5b391ef30d47c8e80f81b80ab3523e05fcb73d94e8a69ecf1"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ReadExistingStringAtOrDefault (cognitive 18): PivotTableHelper.ReadExistingStringAtOrDefault has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":2603}}}],"partialFingerprints":{"codehealthFindingId/v1":"063b800c17fca21c167d7280bbac8c245d85a69378faed759d70cafcd478c8ba"}},{"ruleId":"D2","level":"warning","message":{"text":"SvgImageHelper.GetSvgRelId (cognitive 18): SvgImageHelper.GetSvgRelId has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/SvgImageHelper.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc6e6217bbc9c4587df1be08ff5f23020e9bd0dbd269b5efd9bce528348d931"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateMerger.MergeXlsx (cognitive 18): TemplateMerger.MergeXlsx has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TemplateMerger.cs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"332ae08d92092b610d36faa96f4d6183bf52083bd20bc4f2bd9d41d52cb6b120"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CheckAllCellOverflow (cognitive 18): ExcelHandler.CheckAllCellOverflow has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.CheckOverflow.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbd8f1c9510af65004e7e493de6d84015b8e51c065c1770ef2bda12def2d1670"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.InsertMergeCellCheckedCore (cognitive 18): ExcelHandler.InsertMergeCellCheckedCore has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca214da2c2c079381f73815680ff10eb4827cf216704d85dccfbe6cbc22cd19a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ReadCellRangeAsDoubles (cognitive 18): ExcelHandler.ReadCellRangeAsDoubles has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"14ede6a1ce411ef0e2dc3624d82df1723439747887a40369192acb75ea62d060"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TrimOptionalDecimals (cognitive 18): ExcelHandler.TrimOptionalDecimals has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3791}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bedf1c8a04ecbecf10ee0d2c3e61f6c54e8aba4fde7da3e9eecf62fa4159db9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.MatchesFormatAttributes (cognitive 18): ExcelHandler.MatchesFormatAttributes has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Selector.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea3122c655e3056108914431914452a49c045a9829b25c1ff3cdeede7395b28a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CalculateAutoFitWidth (cognitive 18): ExcelHandler.CalculateAutoFitWidth has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.RowsCols.cs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab69d9db00f008ddf36fbecadfae2be37bad2fc5d37cb373447484e7d27cfe94"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AutoFitAllColumns (cognitive 18): ExcelHandler.AutoFitAllColumns has cognitive complexity 18 (threshold 15). 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.RowsCols.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"b876aef3d8da4c326e1f0a4e28086f039326af14bf3a73b56e7316bbdb159ecf"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ResolveX14DataBar (cognitive 18): ExcelHandler.ResolveX14DataBar has cognitive 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":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":1105}}}],"partialFingerprints":{"codehealthFindingId/v1":"470250fa44986a027ed1b142e181b48ff24d82a6c0a1adf580206830c0978af9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RawSheetWithFilter (cognitive 18): ExcelHandler.RawSheetWithFilter has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/ExcelHandler.cs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8916eacf93f5d55da096c0bca8ef8bcb04b570a8f5ca1b6a65725ffde0fb1d6"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.LayoutsInOrder (cognitive 18): PowerPointHandler.LayoutsInOrder has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2388}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc2688405b9092b3d7f2dd7b458a9fa55a4f7e6bce45317ffe7eb94e6cb48b1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveShapeId (cognitive 18): PowerPointHandler.ResolveShapeId has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e4f82319cc896f8afaa428da2740155a8c87223477d6db5aa4a4e26eb21c2c"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddNotes (cognitive 18): PowerPointHandler.AddNotes has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf58e04f30c0149ffecb2cade260867cfbfec06f575aecfb906be53b0d21a00a"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddSlideComment (cognitive 18): PowerPointHandler.AddSlideComment has cognitive complexity 18 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Comments.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d9581c184269eeb2fed53b033fe4c76b3630e405324f3048d42a4871cd259b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.IsPlainReflectionPreset (cognitive 18): PowerPointHandler.IsPlainReflectionPreset has cognitive complexity 18 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Effects.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"38661c7352512fa880a2fbb657fdd01b16d92609ac55055401fb7da0dab6d826"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveLastPredicates (cognitive 18): PowerPointHandler.ResolveLastPredicates has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Path.cs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"27ca11a47b3104d9973b2fc3f85df62e068fc1a5f48125135056263decf58df8"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AcquireShapeId (cognitive 18): PowerPointHandler.AcquireShapeId has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.ShapeId.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e76595c904dd712fe97e3e6b895e0d01871e9e61deb04a59e7bae10eb3721c2"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetShapeText (cognitive 18): PowerPointHandler.GetShapeText has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Text.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7bfc26c22d4445b28a5e47d4f13425938e72d58fd71821d27d977a8149e6f3"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetTextDefaults (cognitive 18): PowerPointHandler.GetTextDefaults has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"182b053b001b6d0aed1fbdd0beb030f8896e6f21fc077414a6b8fffb7ac7058f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CopyTableCell (cognitive 18): PowerPointHandler.CopyTableCell has cognitive complexity 18 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1388}}}],"partialFingerprints":{"codehealthFindingId/v1":"5851085db4203ca4c1855da157cb9f65fe9c966ec9685b1c281884b585d1010d"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.MoveTableColumn (cognitive 18): PowerPointHandler.MoveTableColumn has cognitive complexity 18 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1481}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9b266312e88eedaa68b8098816e9035d4a890dc307ac8af7b53ce7799984e0c"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.BuildGroupNode (cognitive 18): PowerPointHandler.BuildGroupNode has cognitive complexity 18 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"babf556a826cdd1a4a25d97bbb47e7beecac2cd6e820cca797a895ccec9ec1ca"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetNotesByPath (cognitive 18): PowerPointHandler.SetNotesByPath has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Slide.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f2f6d69655b754c494414c79a92fa1f3edd3148feef765d06f0b52866dcd57"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitComments (cognitive 18): PptxBatchEmitter.EmitComments has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Notes.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcca71a00fdd2c2322bc10fe31bb93a34d78fa5c2938d984f90a11223d797b27"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.BuildTabsShorthand (cognitive 18): WordBatchEmitter.BuildTabsShorthand has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":3412}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eaa0519db5283034f04f7b4d8eb599eca1dd60ff4b2fce37d413b80204b7f3c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddPerm (cognitive 18): WordHandler.AddPerm has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd16a5d4c4a6d79604e218503f596d8c1e6837a90c148d42b857c3747e6b00f"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddFootnote (cognitive 18): WordHandler.AddFootnote has cognitive complexity 18 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b71568a884375c3c989bb33fa1f35bfd73ea43cb8097d68fe1db1055442f465"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddEndnote (cognitive 18): WordHandler.AddEndnote has cognitive complexity 18 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"634d08f0c4a0ec3572abe3db49aeb098dc103348a32e79a40c24ac01f23b9d98"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.IsFieldCachedRun (cognitive 18): WordHandler.IsFieldCachedRun has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"9138c38d1ea9dc76aa4037b7506d6bd24ce8d349cea8f43afb4b4a5ca512dee9"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SplitParagraphAtOffset (cognitive 18): WordHandler.SplitParagraphAtOffset has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c26a9397ef6f826b66fa0603dd537e4885bc6ba367f26011bc2311fb38a43ea"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.FindWatermark (cognitive 18): WordHandler.FindWatermark has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.HeaderFooter.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3cd492d16f54d6a8efab4d9a0931dd798ebb1756119c6328c9b153578c9b089"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EnsureSectPrPageMargin (cognitive 18): WordHandler.EnsureSectPrPageMargin has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.SectionTable.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"916b9e73ffbc40d7c6f0c285cd97d07cc247c76999f6dc22a4920e8ca2bb15cb"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetParagraphTextWithMath (cognitive 18): WordHandler.GetParagraphTextWithMath has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Text.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5e4c3b0592e19f3bf8506f9a7a4cba7246368a284c4e0e4a20febaa5cc42b1"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveThemeCjkFont (cognitive 18): WordHandler.ResolveThemeCjkFont has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":1829}}}],"partialFingerprints":{"codehealthFindingId/v1":"4358be0d585994993ad6cb5cffdc773b488df678970c2a9158a864fe8ea4d365"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MoveTableColumn (cognitive 18): WordHandler.MoveTableColumn has cognitive complexity 18 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":2591}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f68c0ef6303e10cd8d781099afe303c597df86fc88d95637c6e389a28d586a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TableRowToNode (cognitive 18): WordHandler.TableRowToNode has cognitive complexity 18 (threshold 15). 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":3466}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e31b2ccaaacc98398162956374a3d25cd15f5b97358a3a2668d75e83bed5e0c"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetFootnotePath (cognitive 18): WordHandler.SetFootnotePath has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"91ad426169f66e485506c9b5ee70fb72249b6ce3a09ef4bcfab411972ef0e040"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.SetEndnotePath (cognitive 18): WordHandler.SetEndnotePath has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"e35da07ddec58255ccc61dcbbfdbe1a0845a48e8a6f0f2e002f3948c68bb59a7"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.GetParagraphListStyle (cognitive 18): WordHandler.GetParagraphListStyle has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"19092c8db6c93e472d40a573ed497b090d0aaef9daee920b0a1837f0e402f97a"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TryRawSetWithinTableFast (cognitive 18): WordHandler.TryRawSetWithinTableFast has cognitive complexity 18 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":1956}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f89f0dce5576d1de430371a9b4d5b3a0e6f86fcafa8a601060506b5de0a2cd3"}},{"ruleId":"D2","level":"warning","message":{"text":"McpInstaller.InstallJson (cognitive 18): McpInstaller.InstallJson has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpInstaller.cs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"a286e0b8dd09e588d68338957517d792c1c3bcbfb7bf5a866a465dcce18b2810"}},{"ruleId":"D2","level":"warning","message":{"text":"McpServer.Tokenize (cognitive 18): McpServer.Tokenize has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpServer.cs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"58320e79ab8b8dbaaf9213e7a581891a16ecbc4d8a48cc01ad29c63df15f6de5"}},{"ruleId":"D2","level":"warning","message":{"text":"_positionSelOverlay (cognitive 18): _positionSelOverlay has cognitive complexity 18 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"07b668236f6babf35f5640395763f1b24877cac9edb23c2962a2d4373f1b9bb0"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildPluginsListCommand (cognitive 17): CommandBuilder.BuildPluginsListCommand has cognitive complexity 17 (threshold 15). Most of this is not in the body itself: 0 of the 17 points are its own statements and the rest belongs to one function literal inside it that branches (line 29). 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":"src/officecli/CommandBuilder.Plugins.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d76bbc340301ed08acc15e28014254aa68a791eeade437c56910076caf73ed5"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartExBuilder.SetHistogramBinSpec (cognitive 17): ChartExBuilder.SetHistogramBinSpec has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.Setter.cs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"768b0ae01cfaed66d4ac7a98374b7add591b44d2d651219b56ad334c958388cb"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.SetManualLayoutProperty (cognitive 17): ChartHelper.SetManualLayoutProperty has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.cs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d24ebe641b4b0cf8c5de2487be67535be354fe4a058de1a48c0e2b5f949798"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.BuildErrorBars (cognitive 17): ChartHelper.BuildErrorBars has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6517bdfbe179323ebb0c51d0b2e9497a4f5ad40c44a78e7b719e705cae19ed5"}},{"ruleId":"D2","level":"warning","message":{"text":"FontMetricsReader.GetSplitAscDscOverride (cognitive 17): FontMetricsReader.GetSplitAscDscOverride has cognitive complexity 17 (threshold 15). 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":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd4dfc0fa7d1c43573fe06d1b97e26260e459840e3a3b55fcce5a31b4c61509e"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ParseComparison (cognitive 17): FormulaEvaluator.ParseComparison has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e97863cb925b31746519e4c7e81df72d0ec8a8522d4f26e2f0270cf67c5a6f3"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalRowCol (cognitive 17): FormulaEvaluator.EvalRowCol has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b0ff367181d71a75ca21745d375ec8c61269f717994983096662fbe94eac86"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ParseWeekend (cognitive 17): FormulaEvaluator.ParseWeekend has cognitive complexity 17 (threshold 15). 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, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"0007a3255963eb553743674d695252cc5b5b4aa339c593222a39fc73f75552f9"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.BisectFallback (cognitive 17): FormulaEvaluator.BisectFallback has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Solver.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"85adbda3549dab437cd261ac3efa1815380598d60cbdfc908f4a7fd29f80a10c"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.InvRegGammaP (cognitive 17): FormulaEvaluator.InvRegGammaP has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.SpecialFunctions.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e3980b653bc1b982128fa5696807ff7a60cb131561075a9682954e3da5ce849"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalTTest (cognitive 17): FormulaEvaluator.EvalTTest has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Statistics3.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"325542d707bd589e493a0e716a2a2763d138e7fd0ad2e3812f5f8c24c753e3b1"}},{"ruleId":"D2","level":"warning","message":{"text":"MsysPathHint.TryRecoverOriginalPath (cognitive 17): MsysPathHint.TryRecoverOriginalPath has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/MsysPathHint.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cf61a8995447836f841195a3d36ab14742d34874843619f817fd630314fc0be"}},{"ruleId":"D2","level":"warning","message":{"text":"ThemeColorResolver.BuildColorMap (cognitive 17): ThemeColorResolver.BuildColorMap has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ThemeColorResolver.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"95c2dafc72fdccd2a48d67000eac93e7510047fb8b0f9728df2e9c1af08fbacb"}},{"ruleId":"D2","level":"warning","message":{"text":"UpdateChecker.TryApplyPendingUpdate (cognitive 17): UpdateChecker.TryApplyPendingUpdate has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9c6f1bf861d89a71ee4c09a20eef8d45e4c7379115062c031440ffe18c67294"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitValidations (cognitive 17): ExcelBatchEmitter.EmitValidations has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20aba0f834e5ded25dbbd3b18c7e4fb15cd34c7a7459d9d68b8556371aa7442"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddCellIs (cognitive 17): ExcelHandler.AddCellIs has cognitive complexity 17 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"81d8a1ba6cb72fae9442099a9e3a4a957d43dca939f8476bd89de94b4ba7c482"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetCellRange (cognitive 17): ExcelHandler.GetCellRange has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4929e6be9ffedd7faa624771fbbaf72ee0bf27d052448e4c2f93e51025ce9ba"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.TrySetAnchorPosition (cognitive 17): ExcelHandler.TrySetAnchorPosition has cognitive complexity 17 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d985e4b719e3ddfa29e1b8398a22ad510a8e175be1d92d809c722985ea8b87"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.RenderExcelCxChart (cognitive 17): ExcelHandler.RenderExcelCxChart has cognitive complexity 17 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd27b73295464a3d01e75bf48ad116bfa269e82ea5f29e71c92a3e0245563b1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.GetIconHtml (cognitive 17): ExcelHandler.GetIconHtml has cognitive complexity 17 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1632}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7a82976bbebeea4afe8cca71aa6dce2a1558fd264c71142695d96e0bcda4883"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.CollectCfRangeCells (cognitive 17): ExcelHandler.CollectCfRangeCells has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1894}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bfded4feabdb2789496ea59fd9f66163338d7078d957d93f4484e2cff821bd2"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildFontCss (cognitive 17): ExcelHandler.BuildFontCss has cognitive complexity 17 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":2307}}}],"partialFingerprints":{"codehealthFindingId/v1":"63cc6347fda2df37b0441f4f5992bb93e10866bd0cdbf52785c27314d530a06b"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ApplyTextFormat (cognitive 17): ExcelHandler.ApplyTextFormat has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3177}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb2a9cd1cc6da312d890bd26cbdc630d00563f4e82d81b446b0dc55bd194061"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.NormalizeDateFormatCase (cognitive 17): ExcelHandler.NormalizeDateFormatCase has cognitive 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3865}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d13bc1483145c3b29166f0548d1580f3d7d8928c2c4261d2ff1f2557f1b53f6"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.FindMatchingX14DataBarRule (cognitive 17): ExcelHandler.FindMatchingX14DataBarRule has cognitive complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1997}}}],"partialFingerprints":{"codehealthFindingId/v1":"be16865f0ac88679765163ff33bc131407a8bb62de586d625e81cca45aa26203"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.EnumeratePartUris (cognitive 17): PowerPointHandler.EnumeratePartUris has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"10bba5b12c11c9c2e1883641f74eb74f0b64f7ebe8ffb2a13588d0b4908c0100"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReconcileSlideMasterIds (cognitive 17): PowerPointHandler.ReconcileSlideMasterIds has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a69106c5e381ad612f5d18a02e41675b90a05edfd2bc27c8b0818ab2146e20"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.BuildModel3DElement (cognitive 17): PowerPointHandler.BuildModel3DElement has cognitive complexity 17 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fa081593f446a5b15cfc3f0eec3aa30525ddf52dedca676cbc54bec721975fb"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddColumn (cognitive 17): PowerPointHandler.AddColumn has cognitive complexity 17 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbfaf97454d6e48c0b912817e33a029cc6947f25773d4e3088ea3cf7f99063b4"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.InsertTransitionWithMcWrapper (cognitive 17): PowerPointHandler.InsertTransitionWithMcWrapper has cognitive complexity 17 (threshold 15). 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: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fc9b51f26e2d35165e6558e05c0f139fc41d34a9d8190e5816fdcabd6b004f5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.NormalizeGradientValue (cognitive 17): PowerPointHandler.NormalizeGradientValue has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a43c948944fbdc854ced225791db59bbc02229bf3f3cc960648128a4f14edf"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyZOrder (cognitive 17): PowerPointHandler.ApplyZOrder has cognitive complexity 17 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Geometry.cs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aa613043c4714ffc44607f884540de27295b37cac0aa8d1ac2288b8f2ad4df1"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveBulletColor (cognitive 17): PowerPointHandler.ResolveBulletColor has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2845}}}],"partialFingerprints":{"codehealthFindingId/v1":"b093b11af30be02faaa34d30768e81dd703634271503eaec91e984d0febb5c73"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveInheritedPosition (cognitive 17): PowerPointHandler.ResolveInheritedPosition has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce95d825ab86285aa707776d4e16a894cea8aed2de30e40cae7d7c5271c4340"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SwapXmlElements (cognitive 17): PowerPointHandler.SwapXmlElements has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1118}}}],"partialFingerprints":{"codehealthFindingId/v1":"9566b28bcd2b5a1ed4e01ee52431e972f6beec31fbb74430dac2f0e2ca5682d4"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CopyTableColumn (cognitive 17): PowerPointHandler.CopyTableColumn has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1552}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ff2847e5921e1ff86c0053e780685075de4bff36c18eec377ff59c0f418931"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.DeepCopySubParts (cognitive 17): PowerPointHandler.DeepCopySubParts has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1892}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1fe0d02b78032b839b061363256e16c62f6989f2fe448be31185331f2ab1d30"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.BuildChildNodesIntoContainer (cognitive 17): PowerPointHandler.BuildChildNodesIntoContainer has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce9f28c16e9984e6cdbd4ea0b8f28e44824fe048313fdeeeb30f92539f7b29f2"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.EnumerateRenderableElements (cognitive 17): PowerPointHandler.EnumerateRenderableElements has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":790}}}],"partialFingerprints":{"codehealthFindingId/v1":"638fdac4434a1909c7e58ad16978e3e6b1014960534aaf35017d071c43f0cccf"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.MatchesShapeSelector (cognitive 17): PowerPointHandler.MatchesShapeSelector has cognitive complexity 17 (threshold 15). Of this number, 15 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Selector.cs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"229989e0e6ddc769066f2c37cfb1117c6d121e974c46ce62076edf501c3fb9f3"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.EmitMasterRawOne (cognitive 17): PptxBatchEmitter.EmitMasterRawOne has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Resources.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"f155db25ee096f53452f38c7d819f7c72b0b58f3cb9b0c8e743ada6a1b0d12d6"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.WrapRunsInRevision (cognitive 17): WordHandler.WrapRunsInRevision has cognitive complexity 17 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":1797}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f275db1ed4fb9f17ffc9f1be98386bb72e71b6e3a876b8a77953ca81a504a65"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ApplySectionColumnWidthsSpaces (cognitive 17): WordHandler.ApplySectionColumnWidthsSpaces has cognitive complexity 17 (threshold 15). 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":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":3059}}}],"partialFingerprints":{"codehealthFindingId/v1":"5819270738e8c381ac7c6e49d1e3a5124e21ccea3afaf9e200490e8f2ead875e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.MarkOwningFieldDirty (cognitive 17): WordHandler.MarkOwningFieldDirty has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.Field.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"8024dfc4eb96471f17415fc715c00f0cbee1c18423b4fd45b1cf6725637d34c5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddInlineAtSplitPoint (cognitive 17): WordHandler.AddInlineAtSplitPoint has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":995}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6a25986b72fb6331058e04491e34ba3f91171244fb6b92b8779c83d5aadf924"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RemoveWatermarkHeaders (cognitive 17): WordHandler.RemoveWatermarkHeaders has cognitive complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.HeaderFooter.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1d12ae1c30ea49872535cc40e965d0b013aee229cc1bd5064ed7091e46b07e4"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RenderTextBoxContentChildren (cognitive 17): WordHandler.RenderTextBoxContentChildren has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1400}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee0a2bc5b6515eb984798b7fd7dfa02d0c40b345041bf8beb0581a973fe7256"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ResolveTableStyleConditionalFormats (cognitive 17): WordHandler.ResolveTableStyleConditionalFormats has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbffeb60088e9af4c4faab4955e5fc0ddb5bdb14ae702eefa56af634a8361cc4"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.RecalcSeqFields (cognitive 17): WordHandler.RecalcSeqFields has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.SeqEval.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c71a45b3cbb5cde1d17a4bb42bc9ff5771b82b1cc65227ac6ff5f802befb239"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TrySetCompatibility (cognitive 17): WordHandler.TrySetCompatibility has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Compatibility.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80e658153d168e4d316dd3aa4666ce161bc3b948e544579797620c5816f730d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.TryGetRevisionNode (cognitive 17): WordHandler.TryGetRevisionNode has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6cbb9355ced08f8011c73d07aab9c6845fe0f288b3ec1c1f3a5fce18844c6d"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsStats (cognitive 17): WordHandler.ViewAsStats has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"c914c77e8c5f864796bfe908bc4629ec204b553dbe1b95c383100ae6ccabe115"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EnumeratePartUris (cognitive 17): WordHandler.EnumeratePartUris has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"75964d2d42eccc2b304a5bb0fb4da50391f1c5956b6d77a3d74ae60dab9d2600"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.EnumerateSectionHeaderFooterRefs (cognitive 17): WordHandler.EnumerateSectionHeaderFooterRefs has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"821a110295c2213d0d51bd09553f378b72fd98b6476aa7b1e5f010a42f345f51"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.RunAsync (cognitive 17): ResidentServer.RunAsync has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"08783af688b7d2a22c5e492b7a93ea29c0756dc10bae878a29a8a2532bc762af"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentServer.TryAutosaveAsync (cognitive 17): ResidentServer.TryAutosaveAsync has cognitive complexity 17 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"47db880744d3298a293bbdb4c46b7bcc9adf0e1bfae7d96cbddb332cdc218991"}},{"ruleId":"D2","level":"warning","message":{"text":"applySelectionToDom (cognitive 17): applySelectionToDom has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"5da98468b2de75a47a67e7339d023fd2dc1ae91d3331d26e013e03888de7a71b"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandBuilder.BuildUnmarkMarkCommand (cognitive 16): CommandBuilder.BuildUnmarkMarkCommand has cognitive complexity 16 (threshold 15). 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 253). 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":"src/officecli/CommandBuilder.Mark.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"1320705f51af60a0d5575a22b18cc5b8bb2dfd85037607d23c1d38e69d239736"}},{"ruleId":"D2","level":"warning","message":{"text":"AttributeFilter.NearestMatch (cognitive 16): AttributeFilter.NearestMatch has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f4a15f134324912b38d094ac1396892a9f179392a92d747aa932aa1389dd747"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartHelper.ReadCategories (cognitive 16): ChartHelper.ReadCategories has cognitive complexity 16 (threshold 15). Of this number, 12 points are the body\u0027s own statements and 4 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":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1908}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc07b403228d2a1c3cdf739cb058aaa4444c27293755859aeb5f7700d9102713"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.EnsureHyperlinkCellStyle (cognitive 16): ExcelStyleManager.EnsureHyperlinkCellStyle has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"c252b3ff3aa399743a68fcefe3883113a7e0481d348a9f83b45fd5961398c7c0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelStyleManager.LongTailChildrenMatch (cognitive 16): ExcelStyleManager.LongTailChildrenMatch has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1098}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9909bc03767d5d7ddd669d7bb7031e32819a5c27960001bdbb6c88365aa005a"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.ParseCallArgs (cognitive 16): FormulaEvaluator.ParseCallArgs has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dafb7bc3318f74a697d3766a33110777eda696e2219d94009227ce640c5f645"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalChooseRowsCols (cognitive 16): FormulaEvaluator.EvalChooseRowsCols has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"71d676a91fbff6d3cf405f37763ddc4d73e4583e8d954ac47688260a4ee9da6f"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaEvaluator.EvalWrap (cognitive 16): FormulaEvaluator.EvalWrap has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e967d70a48c2cdfff54f95beedfa4d69164717d70adde3f6054bb2afd7fcf69"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseOperatorWithLimits (cognitive 16): FormulaParser.ParseOperatorWithLimits has cognitive complexity 16 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":2325}}}],"partialFingerprints":{"codehealthFindingId/v1":"9601063de4f74c42f7e3473a9e0cccda5ce260e531302d87708267ae77cc6607"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericXmlQuery.GetAttributeValue (cognitive 16): GenericXmlQuery.GetAttributeValue has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/GenericXmlQuery.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"6065050943d08740f9169b6a41da335ddf0846355395da8e15708a914b3ac060"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericXmlQuery.SetGenericAttribute (cognitive 16): GenericXmlQuery.SetGenericAttribute has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/GenericXmlQuery.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"569cb4fe8aa36133977726502845a16e630f7c71a8361a0fb8fed8d283539c3b"}},{"ruleId":"D2","level":"warning","message":{"text":"Installer.InstallBinary (cognitive 16): Installer.InstallBinary has cognitive complexity 16 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Installer.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a1155017c3d627194c1fb17a09a6fd5aba2556a5077fe4ca1f393fcb8150aca"}},{"ruleId":"D2","level":"warning","message":{"text":"OleHelper.AddEmbeddedPart (cognitive 16): OleHelper.AddEmbeddedPart has cognitive complexity 16 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/OleHelper.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e1dc86cc487718c9775e55fbf638affe14246d67252ee8a9e01e566326ebef"}},{"ruleId":"D2","level":"warning","message":{"text":"OutputFormatter.FormatNodeValue (cognitive 16): OutputFormatter.FormatNodeValue has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/OutputFormatter.cs"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"18f9752cd940360a2181eedddb3ef17a27ed898681d53a939ebcb86bced8f237"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.ResolvePivotSourceSpec (cognitive 16): PivotTableHelper.ResolvePivotSourceSpec has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":1129}}}],"partialFingerprints":{"codehealthFindingId/v1":"38170962eca70902b2f37468973d941aac949d0334f6e8b982d533dc45afab5f"}},{"ruleId":"D2","level":"warning","message":{"text":"PivotTableHelper.DedupeSheetDataRows (cognitive 16): PivotTableHelper.DedupeSheetDataRows has cognitive 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":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":2040}}}],"partialFingerprints":{"codehealthFindingId/v1":"88f94fd3f7780ce662d4a3ed956f9559f9f28f4d67b7df04ce78358a58d8d539"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginManifestExtensions.Warnings (cognitive 16): PluginManifestExtensions.Warnings has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginManifest.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d9e2151b7784f6c7d92a214adad7b2486f328e1c269a99225489cf7d637acd"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateMerger.MergePptx (cognitive 16): TemplateMerger.MergePptx has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TemplateMerger.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"c469626941276ab84d30a29b40fcb688d68d0f70757463c9b567c9287788575a"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateMerger.ScanUnresolvedPptx (cognitive 16): TemplateMerger.ScanUnresolvedPptx has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TemplateMerger.cs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fb0f4f8d62c046d8639402838277866ecd0361aa20a7cfd0ec71a9e6b79426f"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedAttributeFallback.TrySetNestedExisting (cognitive 16): TypedAttributeFallback.TrySetNestedExisting has cognitive complexity 16 (threshold 15). 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":"src/officecli/Core/TypedAttributeFallback.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"597788b798a17b84b785f32d83b91f25233206b18651633a6fe87d57f264f6a1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelBatchEmitter.EmitRowCellStyles (cognitive 16): ExcelBatchEmitter.EmitRowCellStyles has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bc52843a4cad4d8488156297016bf8b58e25c3c61024db14d2f466f94380bf"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.AddChartSeries (cognitive 16): ExcelHandler.AddChartSeries has cognitive complexity 16 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 3 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":"src/officecli/Handlers/Excel/ExcelHandler.Add.Chart.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e4f1ec26682896480fd25803d1237cf4ff53e5768f0b4c6b6e06bdaa0b56d4"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ResolveRangeToCellValues (cognitive 16): ExcelHandler.ResolveRangeToCellValues has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Chart.cs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f1ac8d3e0a6fa57cdc014e1cc1ec2b14cbdd36c0f7ec3841eed6fe11752bad"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.BuildCellContent (cognitive 16): ExcelHandler.BuildCellContent has cognitive complexity 16 (threshold 15). 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":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":4193}}}],"partialFingerprints":{"codehealthFindingId/v1":"435914f5286c505723333d112832f93b85d765a1fb9774d340871ac8e2d00cfe"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelHandler.ViewAsOutlineJson (cognitive 16): ExcelHandler.ViewAsOutlineJson has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf96df5d1e4cbed6dd11cc60b27fa0519d5e8987146ec33393b39f43e02ee69"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.MastersInOrder (cognitive 16): PowerPointHandler.MastersInOrder has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2363}}}],"partialFingerprints":{"codehealthFindingId/v1":"625fd441700ea6a9b11900f285dd2d4340b7d8c2aef1ec13a5797d8d26ae843b"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetSlideBulletImageParts (cognitive 16): PowerPointHandler.GetSlideBulletImageParts has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2995}}}],"partialFingerprints":{"codehealthFindingId/v1":"20783d41eec5d9a0ea4fb8c8bc8d59b4ad5638f730257a7422bc57f217b0840e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.GetShapeCNvPrHyperlinkInfo (cognitive 16): PowerPointHandler.GetShapeCNvPrHyperlinkInfo has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4470}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e61c20fde97ad7670d13f8ce7ce987ffffe19c295bd018dce4d4cab22bd5fce"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.NormalizeMediaTimeMs (cognitive 16): PowerPointHandler.NormalizeMediaTimeMs has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"a72ba2e3834a9c7f6f36d77db9d110e762ec48462a10e4712c81dc6e3c4037fc"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddMotionAnimation (cognitive 16): PowerPointHandler.AddMotionAnimation has cognitive complexity 16 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1861}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c599fadaf020f5c67eb8b62ad1b0ff0f2ca0a5760b5d41016d41b395dded7a5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddCell (cognitive 16): PowerPointHandler.AddCell has cognitive 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: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e60102944d0d043941ece66fe7a5194bb2f69cda6e8c8582a56116e75ee703"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.AddEquation (cognitive 16): PowerPointHandler.AddEquation has cognitive complexity 16 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e6aa282602356a30d88c460b75055f0cfdf53e975c638dd21fa7150a3d2851"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.TryResolveMasterOrLayoutShapeParent (cognitive 16): PowerPointHandler.TryResolveMasterOrLayoutShapeParent has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"5482270ad8a9b053cfd2b8ee533701ed8bda6541425e6004547b6da55b2ad97f"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadGradientString (cognitive 16): PowerPointHandler.ReadGradientString has cognitive complexity 16 (threshold 15). Of this number, 14 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.RunFormat.cs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cdd3448f77f17a842061e284e19c807f2125f56d8184bd9fede6971646480f5"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.PatternFillToCss (cognitive 16): PowerPointHandler.PatternFillToCss has cognitive complexity 16 (threshold 15). 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"311f28978e4e66d39dfb70a728f3b3f96bfca4d985fcf176b738a0f7f5c903b3"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ResolveInheritedAnchor (cognitive 16): PowerPointHandler.ResolveInheritedAnchor has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e24ebb33b6f8d842d4a81693c5d9b6d85a635ffdd6170ad0c5db0883d8009a"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.TryResolveDiagramDrawingPart (cognitive 16): PowerPointHandler.TryResolveDiagramDrawingPart has cognitive complexity 16 (threshold 15). Of this number, 14 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":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2982}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48f636a77e5d03db126506314a0bb50c458f21bd5cc6532c4234a941978c73e"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.CopyTableRow (cognitive 16): PowerPointHandler.CopyTableRow has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b067427816b218ead058e6944fde28c0370b5d21b4503ca08fd399d9332098"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ReadMediaTimingProperties (cognitive 16): PowerPointHandler.ReadMediaTimingProperties has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":3010}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c93388afee2114c6c87d2687e7981350bfb0449f6820383b302ff85a0db619"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.FormatPlaceholderType (cognitive 16): PowerPointHandler.FormatPlaceholderType has cognitive complexity 16 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Resolve.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d341128f17192caad4f626b4d978350b8e240753ec63bdb1235ff9fa018ebd2"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.SetTitleByPath (cognitive 16): PowerPointHandler.SetTitleByPath has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1857b1a1de2418baf2abaa298ca9510bc1fdc16e990493d5417b3a406b368ad"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyShapePropsCore (cognitive 16): PowerPointHandler.ApplyShapePropsCore has cognitive 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: 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":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"22a21052bdb8aa55dd9dbd66eb08ced815b9ebf7fb87ff559e4f7e474647d802"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.IsValidDrawingRunAttrValue (cognitive 16): PowerPointHandler.IsValidDrawingRunAttrValue has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7f77a98dd9a3bb97b3a1ffde070a731f05678eb41ee52c636d9c6ad45d57d86"}},{"ruleId":"D2","level":"warning","message":{"text":"PowerPointHandler.ApplyRprLike (cognitive 16): PowerPointHandler.ApplyRprLike has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.StyleList.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"363090b31080e878b7349cda1a1256489f9fb949d50d76a5d7420b398048ee28"}},{"ruleId":"D2","level":"warning","message":{"text":"PptxBatchEmitter.SanitizeChartImageFills (cognitive 16): PptxBatchEmitter.SanitizeChartImageFills has cognitive complexity 16 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 3 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":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Charts.cs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"70723daa112738fb08180e31f8b1fc960b3dbb9a97ff0a8ec9ae86fbdab91c46"}},{"ruleId":"D2","level":"warning","message":{"text":"WordBatchEmitter.StripDanglingThemeBlipRefs (cognitive 16): WordBatchEmitter.StripDanglingThemeBlipRefs has cognitive complexity 16 (threshold 15). Of this number, 14 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":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"feadeab1134b850f4b35cd58ca0f57f30bf0da219059b490e78cd05d6eaee190"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddTextbox (cognitive 16): WordHandler.AddTextbox has cognitive complexity 16 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":2937}}}],"partialFingerprints":{"codehealthFindingId/v1":"45030583e05ab32c7f5d443b85df51973a3e6448bff6f91ce69a6a181589aa14"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.AddShape (cognitive 16): WordHandler.AddShape has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":3129}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e6872d0fa913e20c6d462d116d9456303af9de7a682ac8fc1a651aa1a69c4e"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.FlattenWrappers (cognitive 16): WordHandler.FlattenWrappers has cognitive 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":"src/officecli/Handlers/Word/WordHandler.Helpers.Text.cs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c7dbe8ab0ad63f7fbef2ad466a3fe92c5d1afca45d69e6a170296344df2e55"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.DocCarriesNormalDefaults (cognitive 16): WordHandler.DocCarriesNormalDefaults has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"8beb518b06030762b3c2f3fa43cde4148883f6dd14bddd30b4d0fc186fa931ea"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ParagraphHasAlignedTab (cognitive 16): WordHandler.ParagraphHasAlignedTab has cognitive complexity 16 (threshold 15). Of this number, 14 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":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"888bd1d435bdf1825e11838dc65de2da6142308421cac5b87f116406c72f72d5"}},{"ruleId":"D2","level":"warning","message":{"text":"WordHandler.ViewAsStatsJson (cognitive 16): WordHandler.ViewAsStatsJson has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"39aa63e2b49432f694425f900f87a560df81b7355dde0a7b202e5f7235713c89"}},{"ruleId":"D2","level":"warning","message":{"text":"McpServer.RunScreenshotArgv (cognitive 16): McpServer.RunScreenshotArgv has cognitive 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: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpServer.cs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d8e6589bc5546e5932806cd7b1f528ed0166a05ec382b324ee5ee094aab334"}},{"ruleId":"D2","level":"warning","message":{"text":"_detectRect (cognitive 16): _detectRect has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6ba92c7254076f9073a794823196c556761d768c7dde46e897e5d2f1765166"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 16): (anonymous) has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/watch-overlay.js"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"144144c0720f7dd20dca91398024a8e70882ce41c86b84848aaac1c3e0e1e85c"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 16): (anonymous) has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Resources/preview.js"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ef1e8c0aee881914a155e36a328d9acfe8cd2d4747e9bd84a4c1c645d4e1b9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WordHandler: TooManyMethods \u2014 32882 significant lines (blank, comment-only and punctuation-only lines excluded), 914 methods, declared across 46 files: Word/WordHandler.HtmlPreview.Css.cs (71), Word/WordHandler.Navigation.cs (68), Handlers/WordHandler.cs (59), Word/WordHandler.Add.Misc.cs (56), \u002B42 more file(s). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b87e4525f8dffe96103b4794949566c5e6b9452374134bdbf09db6bd4d46c5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PowerPointHandler: TooManyMethods \u2014 30236 significant lines (blank, comment-only and punctuation-only lines excluded), 847 methods, declared across 53 files: Pptx/PowerPointHandler.HtmlPreview.Css.cs (96), Handlers/PowerPointHandler.cs (82), Pptx/PowerPointHandler.Animations.cs (59), Pptx/PowerPointHandler.Effects.cs (44), \u002B49 more file(s). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd123c689144edb35fd3467846baed150d844523195bd0212988c61459ff0d1f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExcelHandler: TooManyMethods \u2014 17957 significant lines (blank, comment-only and punctuation-only lines excluded), 531 methods, declared across 42 files: Excel/ExcelHandler.HtmlPreview.cs (91), Excel/ExcelHandler.Helpers.Drawing.cs (37), Excel/ExcelHandler.Remove.cs (29), Excel/ExcelHandler.DumpSupport.cs (26), \u002B38 more file(s). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee34f2e7df5feb4319752695f25f9ac7c193685d977872bb91e18f969003ab6c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FormulaEvaluator: TooManyMethods \u2014 3949 significant lines (blank, comment-only and punctuation-only lines excluded), 386 methods, declared across 14 files: Formula/FormulaEvaluator.Functions.cs (102), Formula/FormulaEvaluator.Helpers.cs (62), Formula/FormulaEvaluator.cs (51), Formula/FormulaEvaluator.Securities.cs (39), \u002B10 more file(s). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64420b18501d574d86c7ba54225b0c4c13dea884fe92b14e65b5860774d01f35"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/ChartSvgRenderer.cs: FileTooLong \u2014 3299 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a23e6ece01cdb55d5839b498733e1c412c4e2c2904f50497098deabd1587edd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Navigation.cs: FileTooLong \u2014 3295 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e73645a4e683b67e829025fd52f67238621aaa638aad3295d9aa26c724b8d58"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ChartHelper: TooManyMethods \u2014 7421 significant lines (blank, comment-only and punctuation-only lines excluded), 182 methods, declared across 7 files: Chart/ChartHelper.Builder.cs (44), Chart/ChartHelper.SetterHelpers.cs (38), Chart/ChartHelper.Setter.cs (35), Chart/ChartHelper.Reader.cs (34), \u002B3 more file(s). The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f2dc0b034cf997cf25f9ac132d47d1840cbe2b2675fb32f3928985c9e4ae38"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Handlers/PowerPointHandler.cs: FileTooLong \u2014 2729 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c95fd64317e9332f788322fadd4dc3b9ef6db1400f4a362afcc3e8faae57736"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/ChartHelper.Setter.cs: FileTooLong \u2014 2657 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc9ff4b6bf586117c70d596c9f132bda06cc9f7d916ae3bd2fac4ef79eb3326"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WordBatchEmitter: TooManyMethods \u2014 5534 significant lines (blank, comment-only and punctuation-only lines excluded), 156 methods, declared across 8 files: Word/WordBatchEmitter.Paragraph.cs (63), Word/WordBatchEmitter.Resources.cs (54), Word/WordBatchEmitter.cs (12), Word/WordBatchEmitter.Table.cs (11), \u002B4 more file(s). The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"305cfdf9851e6fcf76664e32a7b5e0e5a3c78762f72fa3c29928c55ca99108a7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.ShapeProperties.cs: FileTooLong \u2014 2283 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce16c2c6eeb1aab0b9e420d6447d0485f6388f7ee2731a03feee570938d2ee1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordBatchEmitter.Paragraph.cs: FileTooLong \u2014 2173 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"25ee3ee7818bde5bc2e4621ac53ac93c31893072e69f0e179409a335a029f51a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.HtmlPreview.cs: FileTooLong \u2014 2135 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb19f0d3d1ff3d3b5110b61fb9ccdb78c87bf1ce6119d97d1a1aeefa8b868b7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Set.Element.cs: FileTooLong \u2014 2008 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b97a6b3c8b579fd3ab26a248fdfa03832e25bdc5e3578f36e97c8d3643f5d2e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PivotTableHelper: TooManyMethods \u2014 4387 significant lines (blank, comment-only and punctuation-only lines excluded), 119 methods, declared across 6 files: Core/PivotTableHelper.cs (32), Core/PivotTableHelper.Cache.cs (25), Core/PivotTableHelper.Definition.cs (20), Core/PivotTableHelper.Parse.cs (20), \u002B2 more file(s). The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e00642f05d6ee9701d95d38d3dc89d223ad2a4b1b4501b25b01f8442d299f042"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Query.cs: FileTooLong \u2014 1945 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4904985a32b74144f830e2ee9bb0ffadf8b773b9dff14324b845a2f028b9848c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Formula/FormulaParser.cs: FileTooLong \u2014 1892 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee2e43bfa5f6430df6bc80e821ab42fe9e71a97a6d36fc5de6e09eec6158890"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Add.Misc.cs: FileTooLong \u2014 1791 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f62e9481430924505385330a30b66c98b2c0647a46daa1bd1383c565a08d09"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Animations.cs: FileTooLong \u2014 1780 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd71111732f28970ec57edc1c4204130e517e2628afc7204ed6cfe721140bea"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.NodeBuilder.cs: FileTooLong \u2014 1759 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c839bc5000f2161abcf56646a8605a9afad1616c860c6e5b59699579da1e2cb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.HtmlPreview.Css.cs: FileTooLong \u2014 1727 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d506f93355bfd810e8e373dc7f5e9dcb88d00c8edb3d0f9eaa160d22bf2a9ff2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Add.Text.cs: FileTooLong \u2014 1700 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4a76e37a2246d1022f2c7fee6817c9035dd551dab941b88a5b6517a112b8ee9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.HtmlPreview.Css.cs: FileTooLong \u2014 1651 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Css.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5a29bed06c51101c27cece165b4390bd84dd8cb14dc9282087717629aae87a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Query.cs: FileTooLong \u2014 1636 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Query.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93d41211a234ea1643b2bfc18d2286a946a6a4c98b501fca2a2fac712fade8c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.HtmlPreview.Shapes.cs: FileTooLong \u2014 1585 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"edebb0af6cf538e42acf3d32cb62380c409fa39068de607068696393d614d0db"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Add.Structure.cs: FileTooLong \u2014 1581 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Structure.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3ff20d6f551f4f4c61fa93fdfba1f9588e9e4307479fb755c8c205092f54db3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordBatchEmitter.Resources.cs: FileTooLong \u2014 1552 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0ac44681f307e3252f227e7f0a0105429b16271f06c500fa0b1ef066918d2a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Watch/WatchServer.cs: FileTooLong \u2014 1494 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"737b321c6bd84ab672e8910e8f4d8ae9d34ac6f8324d285d137a1a347688d0a7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.HtmlPreview.cs: FileTooLong \u2014 1487 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a088acd1c1b0710d373ced5f4e4e8226482a82f62452cd35d959543e811fc7b6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CommandBuilder: TooManyMethods \u2014 3365 significant lines (blank, comment-only and punctuation-only lines excluded), 88 methods, declared across 14 files: officecli/CommandBuilder.cs (44), officecli/CommandBuilder.Plugins.cs (7), officecli/CommandBuilder.GetQuery.cs (6), officecli/CommandBuilder.Batch.cs (5), \u002B10 more file(s). The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17a0ca1bbb3bfdd67f7d9d132d6809918d1c9f970ab983468305499c1fee65d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Mutations.cs: FileTooLong \u2014 1413 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1d90f5fb3f5a19062d3e51a139476217cd2fde206f6e3d70fc78826972c64fc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: officecli/ResidentServer.cs: FileTooLong \u2014 1371 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"30396d18bfc72674c8091f02048a0ce2c2ce6d0b7488c4e3e37215fc88f4e476"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Formula/FormulaEvaluator.Functions.cs: FileTooLong \u2014 1368 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfe0cc86321b3b2000b17b5aa101c2c5798f1d1369fd9e80095cd3bf77ff0818"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/PivotTableHelper.Render.cs: FileTooLong \u2014 1362 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3f60a1f7cb7f7e4b9f9804938f3ee84c5cd361b7f0f298e9d06f693ea797c4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Add.Misc.cs: FileTooLong \u2014 1342 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f1936ab85b297c325720671ac354f473d8f1e6b7bcde760e9466ac454065923"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Set.Shape.cs: FileTooLong \u2014 1339 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Shape.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d163bcbd31a8774ebc5a7fe9dd93f44d4912383552e776b564dc47ccc5e2a4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/ChartHelper.Reader.cs: FileTooLong \u2014 1335 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d4963cbed7b395ff82f3ad379c12c633b2248a32a0891363aec04b704815f1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ChartSvgRenderer: TooManyMethods \u2014 3546 significant lines (blank, comment-only and punctuation-only lines excluded), 80 methods, declared across 2 files: Chart/ChartSvgRenderer.cs (65), Chart/ChartSvgRenderer.CxExtract.cs (15). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af440a7d26f796918ea9da2ee05cb09c1132117795e0e0052b8d6fe940f5f54"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Mutations.cs: FileTooLong \u2014 1300 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"13498091974c0064e22002d132ece5a7bc68ba085112c470ff900fc2d017b654"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Set.Dispatch.cs: FileTooLong \u2014 1279 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Dispatch.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be535414d0c66c2aa2a05941fb8f073707631a2956a80a8efbca8b84ddbaf6b6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WatchServer: TooManyMethods \u2014 1488 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4da771b72b8380d1b0ac99bd1ba7bd8588ac1d3ccedcf584c55fd4987ad3d92d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/ChartHelper.Builder.cs: FileTooLong \u2014 1266 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa40a0b9f90e07d78bed4128118df2673ce2798a8292f9a3005dccbd9b626b6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.SvgPreview.cs: FileTooLong \u2014 1254 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b448791cd82d6b5e26b0694a7c1efdefaacf07f23404f79a388fb19999f4b50"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Query.cs: FileTooLong \u2014 1212 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d0d07a2c0a5b98929a0637dde5323d41b986c4ac627f9b518890a21e08397d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Set.cs: FileTooLong \u2014 1206 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"277898b5aa0da7db47ae0c7bc88b517517d0bc2275a612d9d45edae128ea38cd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PptxBatchEmitter: TooManyMethods \u2014 2593 significant lines (blank, comment-only and punctuation-only lines excluded), 68 methods, declared across 7 files: Pptx/PptxBatchEmitter.cs (26), Pptx/PptxBatchEmitter.Shape.cs (15), Pptx/PptxBatchEmitter.Resources.cs (10), Pptx/PptxBatchEmitter.Media.cs (9), \u002B3 more file(s). The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f94b86265f869a9addafcdd9d2125d8c14d5dc5a1041a81263330f858854316"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Handlers/WordHandler.cs: FileTooLong \u2014 1125 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/WordHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e239d37334dba59910b58a552455c5c00ddd1e17778f6e3439da186d320f35"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ChartExBuilder: ClassTooLong \u2014 888 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods, declared across 2 files: Chart/ChartExBuilder.cs (23), Chart/ChartExBuilder.Setter.cs (7). The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5552df28564f8fae38d8e1cdd93f209af488d522ff3075db0fb8bd4ffece5c7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: officecli/CommandBuilder.cs: FileTooLong \u2014 1083 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a93d0ede1c5afdd3d9ece83c7bdd494f608cb9a083f37dbaafd3827eb230a3eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/ExcelStyleManager.cs: FileTooLong \u2014 1037 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89ff1d827f862d3b6c40a9aad2b2a00d443045c91fe65d5e2140fbc0dc80561"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Remove.cs: FileTooLong \u2014 1024 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3826def506564e50a19c9027b4fa8c4a575ad3a79b705ea8d4d038190edeede7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.View.cs: FileTooLong \u2014 1024 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.View.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"136d8a1657b05e6e80016c97051f1d92fe0fa7876d4167319798fac2e4ab22af"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Add.Tables.cs: FileTooLong \u2014 1011 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6970a3c08c3058fca0c2157e520051816cabf10684f110976df79ee63e4a4fbd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResidentServer: TooManyMethods \u2014 1336 significant lines (blank, comment-only and punctuation-only lines excluded), 56 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5efc3ea0794c5da928e489f034c3d91f5114644ec591804fc451ffc738c715a9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/PivotTableHelper.cs: FileTooLong \u2014 914 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"36090d5bad2f59ca0cd60b5778accb416521384d2bba4140fd41aabf806b8ab9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/ChartHelper.SetterHelpers.cs: FileTooLong \u2014 911 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc30e84d6381b7e62e9fe9f27456b1ea5a0455e89dab8c88aa69a0e6fc90efc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PptxBatchEmitter.cs: FileTooLong \u2014 899 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9119ac604919ca4de02e3150615360883723f4c724f4504e1e8f00a715355fdd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Set.Revision.cs: FileTooLong \u2014 863 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Revision.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd40f7f35d446307d11bfe4bec7d0137c8e637d8ca7f558af06babcb32feac76"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.HtmlPreview.Text.cs: FileTooLong \u2014 829 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78712c08ecfecbbe5842a5c2fb121defeaf6b8d4f70efed36a01278d08e27e98"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Helpers.Drawing.cs: FileTooLong \u2014 817 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a37dcba9d1054eb1b8df279614a7f66c2d693d8a7365e14325a54e93ef89e1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Add.Table.cs: FileTooLong \u2014 810 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Table.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bff3bbec66ab84cba2510b7dafa13cb5aa497a30d415222825cd9fd2435c06c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/PivotTableHelper.Definition.cs: FileTooLong \u2014 802 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e66ab976ca69519232e615164f43c90295a6cfd24ac3328484e7a2f89775531"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.StyleList.cs: FileTooLong \u2014 801 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.StyleList.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb01879c57f3a0b1fca8163516aced90db8f99398910d33faa97907dd196c4a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Add.Media.cs: FileTooLong \u2014 776 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Media.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfffeb9ff56e2e1d23a27f14ddec61cb7becd6dd3b91ec56af2f108674ad3e03"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Formula/FormulaEvaluator.cs: FileTooLong \u2014 751 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7698219c7dc96af798cd5e2382ef754be33e83416de4a5fc41f671f17bf23c23"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Add.cs: FileTooLong \u2014 733 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fa2bbd95fcf25ea52a95995081068709e7d9195f042c8fc69f5ac231f44fbc0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Set.Tables.cs: FileTooLong \u2014 731 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Tables.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"85bd3a3d041c92cee927cc152651f2d14f00d3ead94f03e5926f1996f4797336"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.HtmlPreview.Shapes.cs: FileTooLong \u2014 728 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9407953cacd85697450fa36bc1236770a3ea0ae4ce98a1f13b0a82814a333f6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FormulaParser: TooManyMethods \u2014 1883 significant lines (blank, comment-only and punctuation-only lines excluded), 43 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94c4910e6cbee510ef66ef9c7ce0e372e851f572ba3c6585f9e147c04bdbc86"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExcelBatchEmitter: TooManyMethods \u2014 1076 significant lines (blank, comment-only and punctuation-only lines excluded), 43 methods, declared across 2 files: Excel/ExcelBatchEmitter.cs (23), Excel/ExcelBatchEmitter.Elements.cs (20). The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"548bdab8ad8d35d2199b80ccdf071f459274eefda3220d776525fa6a334c3004"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Helpers.RunFormat.cs: FileTooLong \u2014 716 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.RunFormat.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ea2b18f409bf02a0bd4f526b31eec29c8839c059937b1b73effee9063eb5af"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RawXmlHelper: ClassTooLong \u2014 568 significant lines (blank, comment-only and punctuation-only lines excluded), 25 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14e2b78e740b41c784fe0c90e503e493c4ef2817682e0ee1e8f5c318e2dd845b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Set.Media.cs: FileTooLong \u2014 702 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a5a7c1e897bb5c7111061f7240b962ed177241c9b20db20be8f2e903e7e25e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Add.Media.cs: FileTooLong \u2014 692 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f372d2904039362d7db8ca4bb09db4680fa761b4bd0344d3b6c1d6f515f6322d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Helpers.Node.cs: FileTooLong \u2014 675 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"73f61a86420b715aed16b94e8a0cad7c1ceacd79bdfe9cc52b09085502a35a8b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WordPdfBackend: TooManyMethods \u2014 484 significant lines (blank, comment-only and punctuation-only lines excluded), 40 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7331bce97cdbd9a5a779bb2cc8af6b8ca6b38ffeed7b76aae69e269665c07a4c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/AttributeFilter.cs: FileTooLong \u2014 664 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad72e02f767d199ca63d01fe18afb6457c8e35853371a44675535aa3d78ffd7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Add.Text.cs: FileTooLong \u2014 661 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e2ec95e0e5a6c4db564d4689005fa7ee9f47cc407b946b42913971a168cb7a7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExcelStyleManager: TooManyMethods \u2014 1033 significant lines (blank, comment-only and punctuation-only lines excluded), 39 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d03bb078a80a35ffc82818d3ae70453bdbe7539e564057224ad5454e7aa8b1c2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AttributeFilter: TooManyMethods \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded), 39 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/AttributeFilter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"77c139ec4c38f98b5a49ce21b7988a630eeecbb6f18d6a4578326dcc386b68cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Add.Drawings.cs: FileTooLong \u2014 645 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a531536897057116b3c973f72385856a801030097598b2aef6ba20c3b512352c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/PivotTableHelper.Cache.cs: FileTooLong \u2014 622 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Cache.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"19cc829de5ce20e1663ce78d69e33c5f9c55f7d9fd2bd5229f022ce441a5ada0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.HtmlPreview.Text.cs: FileTooLong \u2014 621 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"380aa1bccaa4655a445c79acd9660397201e74f864dd6f76607551a6bfeeccc5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Add.Cf.cs: FileTooLong \u2014 618 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9df23d9b98586cb3be5917de21b877dcf8f53996f7ae88ff26f7b28b803b39"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordBatchEmitter.Table.cs: FileTooLong \u2014 604 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Table.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d1e3d2e4dcf7244c3efdd631c45eda31c8cca2ee888466697634822311924e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.View.cs: FileTooLong \u2014 601 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.View.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed1b2f3784b1490595d5bcaff16e1d093d1b0664c4b8ff4b4ee408bc55f88e9d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Set.Sheet.cs: FileTooLong \u2014 585 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a93af502a3a1a9207d888b405a70fdbb816cdb0bc6bfc3b3a4425d02f8f79c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.View.cs: FileTooLong \u2014 584 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db8a5b9d34de828975e060fb1ce89306e4f0850b458dff310cfc2705fb3ba5e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Helpers.FindReplace.cs: FileTooLong \u2014 582 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Helpers.FindReplace.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec6bf6bb2cf4d3e7accfa9be11551a759c27b61085f083525de17fd38ffd59f5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Core/RawXmlHelper.cs: FileTooLong \u2014 578 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c170e5d9035c5dfd03ed2f78f84e1955936830a8b5ed056278fd070fd0404cfb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelBatchEmitter.Elements.cs: FileTooLong \u2014 570 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.Elements.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f7ffef77ae47dd415e036676404c033fdbdac91ff6f6c554643e320bfe42642"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.Add.cs: FileTooLong \u2014 570 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd2468b025ff42a57e9cc64b9354535b5f48501bcf1bcdd86d1645e354c802c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.ImageHelpers.cs: FileTooLong \u2014 567 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.ImageHelpers.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4635bb432906620ee32ea6ff0ed9bea38a8302daeb0050cd62849249bf566bcf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WordNumFmtRenderer: TooManyMethods \u2014 355 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordNumFmtRenderer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bfe04345b598112b23a4e6c2f44188c440e26a1978c53935906268b8b0ab03f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FormatHandlerProxy: TooManyMethods \u2014 202 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerProxy.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"872108125794b77cd7d1937d33e9ff7766b1ff6ee9fd17fb72b6bd6fc19340f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Word/WordHandler.HtmlPreview.Tables.cs: FileTooLong \u2014 552 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Tables.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"361e7eca00fe3201b4cf05ee505c52094ac2048accad65a9970b939a3865e5e8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Background.cs: FileTooLong \u2014 543 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Background.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60b12ef3021ec5e12fda037a7222f1d2d24dae5aa28bea5854e4ccbb960e3f5"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BlankDocCreator: ClassTooLong \u2014 434 significant lines (blank, comment-only and punctuation-only lines excluded), 7 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BlankDocCreator.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ecb956e9e446348401f8ab1f19746a8baa707b4f4e2c206a04ea0a2263486f1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/ChartExBuilder.cs: FileTooLong \u2014 540 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f69d0cbe40b0779ed67d3cf9088cb98e77d63478a610d532864b6b5914caeeb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PptxBatchEmitter.Shape.cs: FileTooLong \u2014 537 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Shape.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffeb8792636b430f2143ab2271e35f889abce930d2b10ca35ae24167975481d2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Pptx/PowerPointHandler.Fill.cs: FileTooLong \u2014 536 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Fill.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a72d4870cf7d7396f262424675dcf6d18a72f21304d02dbd3d24897e2ef9b785"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FontMetricsReader: ClassTooLong \u2014 412 significant lines (blank, comment-only and punctuation-only lines excluded), 24 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FontMetricsReader.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff047bcdf5c1195144e401e33b7d36720e61905504f933605b686bb4395ee80"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelBatchEmitter.cs: FileTooLong \u2014 514 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelBatchEmitter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1950ff32e121ec5528a3f40ea8898395caca443d14d0d063ae4d8131fc092f1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/ChartHelper.Axis.cs: FileTooLong \u2014 513 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Axis.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e3cee3f3eeac2352f2dc430b351b805f71122684b4af7074f2a121b263acbe6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ParseHelpers: ClassTooLong \u2014 410 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The type holds no instance state, so there is no shared data to group its members by. To reduce it, split it by area instead: give each cohesive family of members its own smaller type, so no one type has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ParseHelpers.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef17640e389612d91875c602471894fe8c09a948df31648a2dc854b7a5ac5d96"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Excel/ExcelHandler.Slicer.cs: FileTooLong \u2014 504 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Slicer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad5fe8e8b166fe13334e725742f107db3f755e60e0e882501039d643a2c767f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:687-712 | src/officecli/Core/PivotTableHelper.Render.cs:1956-1981 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa17d5cfb0f230c49b1d26209337aaa9880983821731ed3af89249b027e6ba54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:1010-1036 | src/officecli/Core/PivotTableHelper.Render.cs:1444-1466 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ab47e181e01231226d099cde24ba2d81ddb85c52007f773a7440232fe68161e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:485-505 | src/officecli/Core/Chart/ChartSvgRenderer.cs:735-755 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:485\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6c864ec3e68f73ffb1bca939c93811a665bd7c3c84c453d06ea76ec9dffccb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.cs:564-584 | src/officecli/Handlers/Excel/ExcelHandler.Add.cs:600-620 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.cs:564\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"6785ffcbcc723108a1a01d7d47d970742b1d57262bbd9ebe6c1ff91c527692bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs:175-198 | src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs:502-522 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Charts.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"116f2dd067aca8b59c10d19657c36defc7bd772278b7e158fd876954887fc65b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs:1616-1635 | src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs:1666-1685 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs:1616\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":1616}}}],"partialFingerprints":{"codehealthFindingId/v1":"a06cbc31cd44a759c2d98275b76a63c7ed98f5dd5bb3632225017b1746838efc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:345-363 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:407-425 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d657474a6bae7557ac0715b94ae1d0b3394e5f7b3b6dde49ff7e9b9c3f38d32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:789-807 | src/officecli/Core/PivotTableHelper.Render.cs:1623-1639 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:789\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"75dfa24fee71079d8943de5b840196dede5de5495908cb1733a2321cf0d27f0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): src/officecli/Core/Formula/ModernFunctionQualifier.cs:325-345 | src/officecli/Core/Formula/ModernFunctionQualifier.cs:422-437 | src/officecli/Core/Formula/ModernFunctionQualifier.cs:443-461 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/ModernFunctionQualifier.cs:325\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/ModernFunctionQualifier.cs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ee36ec085e016eb7f1172cfa643af9e9f2292882ad92eddc4f8609998e18b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:480-495 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:593-608 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:480\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"0757c7c8d30c64812ac58fa266722fe5543d84509778adbc58c4bc52c7b11f16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): src/officecli/Core/PivotTableHelper.Render.cs:864-878 | src/officecli/Core/PivotTableHelper.Render.cs:1248-1262 | src/officecli/Core/PivotTableHelper.Render.cs:1712-1726 | src/officecli/Core/PivotTableHelper.Render.cs:2451-2465 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:864\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"53b24291649ceb369d04fb6c2373a95ab6009cf421861223e72eed83f9009dcf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.cs:129-145 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.cs:169-183 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.cs:129\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"704817d726736c63c23b56ec59e968dd3db6b37e1591743f19bec4858375c6c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Core/ExcelStyleManager.cs:189-201 | src/officecli/Core/ExcelStyleManager.cs:211-228 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/ExcelStyleManager.cs:189\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"7793833c076266aa290a1f5283c09721c5b42cdaf252c53801f592c0ca34bec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Parse.cs:678-698 | src/officecli/Core/PivotTableHelper.Parse.cs:709-721 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Parse.cs:678\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Parse.cs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"a732b0024cf19da3a9962f589a657dcbc021b256c3c2eb300ed41e585fb6e6e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:731-743 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:845-857 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:731\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"70d95d857232503f909acad536c21dbee880ab043736ac6e34cb5d70d9028edd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Query.cs:1548-1560 | src/officecli/Handlers/Excel/ExcelHandler.Query.cs:1579-1591 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Query.cs:1548\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1548}}}],"partialFingerprints":{"codehealthFindingId/v1":"b086477739c96270ef141d4f0d3c462930f6199d3e706c1208318702ea05d6a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs:675-687 | src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs:708-720 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs:675\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"3568ae26b8ab1acc9a0b89b609099a288cd5751cb6bc3b4c3037a08a6a1a832c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:211-225 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:249-261 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"2972dca83353b4156401d2eb0e56cf472d0562096f4dfae10004f233febbe569"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:446-458 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:463-475 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8d3fe63a7f610af39a041c19e83775dd9e3dc0ccb16d998b166745ad2e2c3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:372-386 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:924-936 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:372\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3fbc3e80b3bc902f4a8cf3fcd339560d943dab43575e400c9d0f1d3220707d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:1646-1660 | src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2089-2101 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:1646\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1646}}}],"partialFingerprints":{"codehealthFindingId/v1":"acfae15d0aa850915dee36bd8c463d088267220bc33c27dc14a7db951942acf4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 5): src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:277-288 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:423-434 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:444-455 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:461-472 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:478-491 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:277\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"66f953d08e8d6b23888b8193844603c79affd399eb23b9d2b7f921a5d68e9c84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 5): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs:1053-1064 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1186-1197 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1943-1962 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:19-30 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:23-34 \u2014 there are 5 copies across 4 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 5 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c30e3ccb666e70bb6e949fd17cbc782eaa9c3ebd24cc35200093d62adb1327"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Reader.cs:2509-2520 | src/officecli/Core/Chart/ChartHelper.Reader.cs:2547-2559 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.Reader.cs:2509\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":2509}}}],"partialFingerprints":{"codehealthFindingId/v1":"abdfb764d7d73cb43c3fc30d5e0c6f654843994fbc9abbfd46341acbea27a76c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:4337-4353 | src/officecli/Core/Chart/ChartSvgRenderer.cs:4362-4373 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:4337\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4337}}}],"partialFingerprints":{"codehealthFindingId/v1":"5da28a01defb58f23f13bc10f819589a8b75271d5e88023b465ac142b5a7fd9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Core/Formula/FormulaParser.cs:1180-1191 | src/officecli/Core/Formula/FormulaParser.cs:1204-1215 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaParser.cs:1180\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a2a5fdba1b09dcc25401882aee31686bcb85a377404455a7add0af3160d3cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:2337-2350 | src/officecli/Core/PivotTableHelper.Render.cs:2415-2426 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:2337\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":2337}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33d789988881077773b47941ab2789c84d20182b795d2cead9d13d5fe6e14b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Core/TypedAttributeFallback.cs:135-160 | src/officecli/Core/TypedAttributeFallback.cs:252-263 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/TypedAttributeFallback.cs:135\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/TypedAttributeFallback.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9aa99ffcc3dcb0d05ce853f278a95a0914eafc7fde7f3c0c198d9e29622a817"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:775-786 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:805-816 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:775\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"180ab5b8e77ba43c70ffba79e4b48b15d073a7641650dd4389b34e719d7df7ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Ole.cs:49-62 | src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Ole.cs:41-52 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.Ole.cs:49\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Ole.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9d950d64930fad75da793cad2209f7344240d59ec1f91ad96019eb9f812f90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Query.cs:86-97 | src/officecli/Handlers/Excel/ExcelHandler.Query.cs:191-202 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Query.cs:86\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2080a9c6a21d6d8bae2700c7f13d3e0cc1477dfee6b1db20c483d9fb49a7170"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Query.cs:464-477 | src/officecli/Handlers/Excel/ExcelHandler.Query.cs:485-496 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"58054931ffdd3b4a9efcd42ed1bb87eadde4b29858b5bd1f26afe1c0139bd346"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Query.cs:1385-1396 | src/officecli/Handlers/Excel/ExcelHandler.Query.cs:1420-1431 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Query.cs:1385\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1385}}}],"partialFingerprints":{"codehealthFindingId/v1":"e44e67ec0a4f395dc032a8c9e9f20278200bddf97ae9a6f466d633764a6f0341"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1433-1444 | src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1525-1536 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1433}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba9ee3a59adbdd4d72248cee64b6cc3262262b8ee0f04aab5e49031c91020657"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs:157-169 | src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs:185-196 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs:157\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Workbook.cs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"6475cbc1f18cc73d663c28b2c62a5d2e5d2dc050c466ab01fa8dd48560da221d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1226-1237 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1566-1601 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1226}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c22f9ea7d4e4fcf98d761fad04f88162108c9a8850baada3140fb555c5e566"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): src/officecli/CommandBuilder.Add.cs:423-433 | src/officecli/CommandBuilder.Import.cs:26-36 | src/officecli/CommandBuilder.View.cs:47-57 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/CommandBuilder.Add.cs:423\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Add.cs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3befd96537c66f2b94a22f6b8df45ec65c7fd8b3bf542d3393c52b8a011458a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Core/Chart/ChartExBuilder.Setter.cs:177-187 | src/officecli/Core/Chart/ChartExBuilder.Setter.cs:189-199 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartExBuilder.Setter.cs:177\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.Setter.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"4544548ff5f9b88608b8766446b79539b1b314eca74f3ffddd45d3c8585b294b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Builder.cs:192-202 | src/officecli/Core/Chart/ChartHelper.Builder.cs:218-228 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.Builder.cs:192\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb7155b1430b86477556850c296bc0d3b6273a24f1f3a296069ce9e52a6fa9cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:4395-4405 | src/officecli/Core/Chart/ChartSvgRenderer.cs:4438-4448 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:4395\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4395}}}],"partialFingerprints":{"codehealthFindingId/v1":"c713ee4cefbdbb215cf50d9ebcf4b4863e3694841f6f211d06e0c95e70cb4429"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Core/ExcelStyleManager.cs:1243-1256 | src/officecli/Core/ExcelStyleManager.cs:1370-1380 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/ExcelStyleManager.cs:1243\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1243}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb302c3a031dfb8e08246661fefcfecd1ce925c4ca74e3c6a708f39aa451e28b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Core/PivotTableHelper.cs:1757-1768 | src/officecli/Core/PivotTableHelper.cs:1776-1786 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.cs:1757\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.cs"},"region":{"startLine":1757}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0236c16f04de32ca81f203d79ce0e8538de093e4e3b3aff1c64d9a36792c268"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:1228-1238 | src/officecli/Core/PivotTableHelper.Render.cs:1692-1702 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:1228\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"379c287bc084e191ff3d8df9e4f86722805836a849ebfe6293bed00d9968ebec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Chart.cs:97-108 | src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs:314-324 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Chart.cs:97\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Chart.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25ecc11ad9b00a5dd1a75e8f3d4497185fbd5ad3b92b0955fccf539850fc88e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:410-420 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:551-561 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:410\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"4116936d00f90300cfef90015fb4fe4372fde72f854f614a445b884e798da52d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:440-450 | src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:459-471 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:440\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"969d791419e872b233fd05b4812042764933ea27cd8cda813ef6059e6fbedbba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/PowerPointHandler.cs:4197-4207 | src/officecli/Handlers/PowerPointHandler.cs:4919-4929 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/PowerPointHandler.cs:4197\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4197}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bc20ec1919b052bd1129c9431d5d8ee935a1e420be9df92e16669fdc864449c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1370-1380 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1382-1396 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1370\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1370}}}],"partialFingerprints":{"codehealthFindingId/v1":"840c90ccc0dc9830eb6298b54dade37f72bcb21efeb193873398e8ccdfd83d1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:2114-2124 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs:141-152 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":2114}}}],"partialFingerprints":{"codehealthFindingId/v1":"345f8c82af564ec0bae3e2aad69bfcf176c06b91d595fa24c3685a1d001d6db7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:236-246 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:692-702 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:236\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91c92a9af41c86b549c764bb436c4c88430de1ae51352240a4bc4f0a022172b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:3065-3077 | src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:3120-3130 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:3065\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":3065}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1f94f8306069bf8b63bf78860f0dd9a21920b7f0882759423f774fe198ac44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): src/officecli/CommandBuilder.Add.cs:45-54 | src/officecli/CommandBuilder.Add.cs:423-433 | src/officecli/CommandBuilder.Import.cs:25-34 | src/officecli/CommandBuilder.View.cs:37-46 | src/officecli/CommandBuilder.View.cs:47-57 \u2014 there are 5 copies across 3 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 5 sites; resolving a subset leaves the remainder to drift apart. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/CommandBuilder.Add.cs:423\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Add.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1acf48feccc9b2997dbed55b4328923c07c58de26369c09f92d1f9afefa4b07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/officecli/Core/Chart/ChartSvgRenderer.cs:4302-4311 | src/officecli/Core/Chart/ChartSvgRenderer.cs:4385-4394 | src/officecli/Core/Chart/ChartSvgRenderer.cs:4427-4437 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:4302\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":4302}}}],"partialFingerprints":{"codehealthFindingId/v1":"219af5537c2d8fbabc03b2f32fe3bc0d507ac5ed2f9ebf91f8231cc553ed3331"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:637-650 | src/officecli/Core/Chart/ChartSvgRenderer.cs:931-940 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:637\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"66b64d341001c41f9ca47cad98cdf86b6ce2f580f44f2c9e916262ef6ef39541"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:5074-5083 | src/officecli/Core/Chart/ChartSvgRenderer.cs:5152-5161 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:5074\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5074}}}],"partialFingerprints":{"codehealthFindingId/v1":"f74d48d11786187f6f806d5c7897892083d1bdb43d573f9722eaefd1a90ef710"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Core/ExcelStyleManager.cs:1206-1215 | src/officecli/Core/ExcelStyleManager.cs:1229-1238 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ExcelStyleManager.cs"},"region":{"startLine":1206}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5aaf2d358b67b48d2a374d65ad65d1330cac02e7dcbd50ba81b6f756349f91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:1193-1203 | src/officecli/Core/PivotTableHelper.Render.cs:1657-1666 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:1193\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d7b87b742a4a079685305cf88ebd5cd1af646f5c0894f4c5676812ec4b8b9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:936-946 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:964-973 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:936\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb5a227904806048244a7b41258737ac1cc84d05664d7b2225eccc34a9d692f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs:396-407 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs:437-446 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs:396\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Sheet.cs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3a1ee1f2071e9b24cd3de3f81bb6f2af607a187ae52e18abfe96eb961a61913"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1180-1190 | src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1318-1327 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1180\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"3518f8963854257a62f4ab288e14165e6fce66d6d14c54ea123d75fc94dd2169"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1677-1686 | src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1723-1732 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1677\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1677}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba783cf10055c3048e56d463a65ef9df719ff9ea22edc168629b9c65ddf27117"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:682-691 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:750-761 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:682\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1ef4c77f03507d80e510460ed66eba516385df74a9e450c6b29cbeb395ccc35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:80-89 | src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:164-173 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:80\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c5e97cc179cffbb2704eaa05a42d457db379918b6e583f5887968bb26e4d46"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:2017-2026 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs:90-100 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":2017}}}],"partialFingerprints":{"codehealthFindingId/v1":"f426ad46ced20eac1007e941400262a2e64791291b0d16f007ff0028cecc632c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:2138-2147 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs:162-171 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":2138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b19ca67de7d0254a98f8b425be94bd824896110dec73b4ea56efb6c9f63d37dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:192-201 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:511-520 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:192\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bac84b8c59ccd3fe83ad0908ac0f08f09339ea76b303b285cb34e8f7460290a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:514-523 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:657-666 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"89aa62a147d9eaca33f634e232a90a2af163f661676415bef3db500ac5995eae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:1297-1310 | src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:1463-1472 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":1297}}}],"partialFingerprints":{"codehealthFindingId/v1":"732bf2962f55a0e3cbde460d06d11d173f163e02fef286211877624d5c7f4c3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs:129-138 | src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs:221-230 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"df1a2b6a601d33177bd6885c42529b1397c2ecdf16c4b8b666446f54e7f13aef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1949-1958 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1978-1987 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1949}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b092f845afad3f3ad6c491db54e4619d53f0d145c595a79d37611ab584c1ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 9): src/officecli/CommandBuilder.Add.cs:351-359 | src/officecli/CommandBuilder.Add.cs:426-434 | src/officecli/CommandBuilder.GetQuery.cs:21-29 | src/officecli/CommandBuilder.Import.cs:29-37 | src/officecli/CommandBuilder.Import.cs:129-137 | src/officecli/CommandBuilder.Import.cs:276-284 | src/officecli/CommandBuilder.Raw.cs:24-32 | src/officecli/CommandBuilder.Raw.cs:69-77 | src/officecli/CommandBuilder.View.cs:50-58 \u2014 there are 9 copies across 5 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 9 sites; resolving a subset leaves the remainder to drift apart. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/CommandBuilder.Add.cs:351\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Add.cs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"232da47464600121fd936fc81ad6b495269f6dbcbac7e2662dc97fc1d087ea3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:2078-2086 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:2156-2164 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs:180-188 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":2078}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2dee991ebac78f0a44a6b9de144e8d0f4b28ec83c8cac9294631eeb7458624"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/CommandBuilder.Check.cs:16-24 | src/officecli/CommandBuilder.Refresh.cs:16-25 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/CommandBuilder.Check.cs:16\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Check.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4e91421ba607e5637e1fc51a9f5f0a1955b178cb4bc1f4355d27003dd9bfcf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/CommandBuilder.Goto.cs:29-37 | src/officecli/CommandBuilder.Mark.cs:248-256 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/CommandBuilder.Goto.cs:29\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Goto.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"414f59379be6b7f9a750e2519aa090d5a9f1bb4987ee70a6172a1827bd1c4214"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Reader.cs:1932-1940 | src/officecli/Core/Chart/ChartHelper.Reader.cs:1942-1953 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1932}}}],"partialFingerprints":{"codehealthFindingId/v1":"84125fad233d164d124b7c721f8281bf3ff706150dd390d7605f5a551dc6fed8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Reader.cs:1955-1963 | src/officecli/Core/Chart/ChartHelper.Reader.cs:1964-1978 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1955}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f4e69b63dfc1bdb34fc3557c32e660f2a827a1752df47e913c6b4cad3cf8b66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:5060-5068 | src/officecli/Core/Chart/ChartSvgRenderer.cs:5133-5141 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:5060\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5060}}}],"partialFingerprints":{"codehealthFindingId/v1":"e00bc2dd6b548df73a4d733f5a361567bd032df15a3e41b5dcdc3c82aa9b334c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1159-1168 | src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs:557-565 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1159}}}],"partialFingerprints":{"codehealthFindingId/v1":"f227501e6254e2a819f25b2de55a154ed60422fdf1696e48875f8b6a05989f14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:144-152 | src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:217-225 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ac7c53c46f1882bc3e16c0cabd094fb744615b22d67cab713d850f1806097d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/Formula/FormulaParser.cs:501-509 | src/officecli/Core/Formula/FormulaParser.cs:880-888 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaParser.cs:501\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd0fab994522e2a6a4b00864785bb5411ec0d6fd2ec8a04b1dedc15d1998bef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/FormulaRefShifter.cs:145-153 | src/officecli/Core/FormulaRefShifter.cs:231-239 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/FormulaRefShifter.cs:145\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/FormulaRefShifter.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"85b786186b4f75f4e868203563a7d2ee9112b86bb0203b32f2a555202cb3f483"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Definition.cs:1684-1692 | src/officecli/Core/PivotTableHelper.Parse.cs:769-778 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Definition.cs:1684\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":1684}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee7dac644138a584a9e6d22da417a39ffd56c2dd05ebf6b45f3fccd56862c52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:593-603 | src/officecli/Core/PivotTableHelper.Render.cs:918-926 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f314c56ff081443d0e9bd335a951f78cc29f3de545ecd3861ac88c46d27db8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Core/Plugins/FormatHandlerProxy.cs:202-210 | src/officecli/Core/Plugins/FormatHandlerProxy.cs:222-230 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Plugins/FormatHandlerProxy.cs:202\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerProxy.cs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"70fe99de4824d483c3fb8e831625035dfb7daf239a9dcde6aa3c1b5e21893db6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs:486-494 | src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs:902-910 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs:486\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"191ec4ec6acfc00d5b20235826159269714a1fd5e652b44ea1ab94930ff21e31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:502-511 | src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1656-1664 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:502\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc872c2085f51f9bf6b98ad129d5df16d5d25d7c9d7716dd3ebf334669daed8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1378-1386 | src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1552-1560 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1378\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":1378}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4eb18a0caadfbcec8a4e7a9bc166cefc125d074c525ccde84876b928facf5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1131-1139 | src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1153-1161 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Remove.cs:1131\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b2b907c21be0f17cc24c6e06c787c23c90d41ad4e3bbe6c51d0f1429395e351"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:166-174 | src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs:185-193 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Sheet.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"db4478f5bf1adb5d68912cb7490c8b74d65dcf909078e39ccd1845b3f546d0a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/PowerPointHandler.cs:2437-2445 | src/officecli/Handlers/PowerPointHandler.cs:2598-2606 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/PowerPointHandler.cs:2437\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2437}}}],"partialFingerprints":{"codehealthFindingId/v1":"574d8cf3f64cadc343a7b29a73199262f6310007f127bc9a18393d937e585574"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/PowerPointHandler.cs:4186-4194 | src/officecli/Handlers/PowerPointHandler.cs:4908-4916 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/PowerPointHandler.cs:4186\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4186}}}],"partialFingerprints":{"codehealthFindingId/v1":"de86dff762409774e00a07cb2892be51d37fc99178cde4ac60de5fa42d40ef07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:430-438 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:510-518 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:510\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cb0529c512b580fd7d6188e05d8075b6b13a0b1e9c8cc116a8600639c28f46d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2535-2544 | src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2586-2594 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2535\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2535}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d9b2f910ac5865b586f2d9a09e6d4e600fd2d9aae5a8fd9fe5ea2498f7987cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs:161-169 | src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs:248-256 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs:161\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Zoom3D.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb40c5e0d5be83a51139ef04a654bdda4f3b5e0ab1e894e2bb7a80c1f49fb2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2036-2044 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2065-2073 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2036}}}],"partialFingerprints":{"codehealthFindingId/v1":"b878d0d1678f8bcab86935f3a17cfdba0924cc47f364c12018ddd81512ca5ac0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:281-290 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:368-377 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:430-439 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:513-524 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:632-639 | src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs:946-959 \u2014 there are 6 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 6 sites; resolving a subset leaves the remainder to drift apart. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:281\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa37e1766afdd5885c6f497fcf74363ded791e86a4aeedd1227113e2594e5788"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2479-2490 | src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2523-2531 | src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2577-2584 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2479\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2479}}}],"partialFingerprints":{"codehealthFindingId/v1":"3115085c2a297932929cfabcae7e1d342a89ddd671cbe4ad50dbc175665c383a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/CommandBuilder.cs:1324-1334 | src/officecli/CommandBuilder.cs:1376-1383 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1324}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f4ceca115678262aa47e68406d5ff8cd0ad6a0cb4c97aeddd8a7ebb976700e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Chart/ChartExBuilder.Setter.cs:103-110 | src/officecli/Core/Chart/ChartExBuilder.Setter.cs:116-126 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartExBuilder.Setter.cs:103\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartExBuilder.Setter.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c8c45f102ddef80d439222e0f24211370833fd3d7f8eb4d7ba63a7ea87e5ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Setter.cs:3868-3875 | src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs:1004-1013 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.Setter.cs:3868\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":3868}}}],"partialFingerprints":{"codehealthFindingId/v1":"335f5829eff9603bbf2643f1d036561240c8120afa1d10ef347df988d409742c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Setter.cs:4133-4140 | src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs:1179-1186 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.Setter.cs:4133\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":4133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab56b7345f27ce5beee39dc0412749a8b069014a922c6a961c65a1ac5196b73b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:534-541 | src/officecli/Core/Chart/ChartSvgRenderer.cs:786-794 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:534\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"36310a6edeea25320f3db72b47d2a33df94e45b7cb83cac28c2e9020bf786fa3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:698-705 | src/officecli/Core/Chart/ChartSvgRenderer.cs:997-1007 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:698\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"1209cfcc947d6bdd0194d96ef1f8af5105791ee36a8974bb7b430c9e17181661"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:2778-2785 | src/officecli/Core/Chart/ChartSvgRenderer.cs:2796-2803 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:2778\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2778}}}],"partialFingerprints":{"codehealthFindingId/v1":"7683afc5b7022ba36ac144044bc99fc3e932399d4f2322359a12c1a9b3e5a38c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Spill.cs:340-347 | src/officecli/Core/Formula/FormulaEvaluator.Spill.cs:356-363 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaEvaluator.Spill.cs:340\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b0d47f2d26cf8a500c35eeddb32ea35ee33ae235d27c8f1cdda9b06db669f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/Formula/FormulaParser.cs:483-490 | src/officecli/Core/Formula/FormulaParser.cs:866-873 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaParser.cs:483\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"4343fc7c45bf33732b75fe1195c497ee35629e46e5cc502a94a3661926d33304"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:417-426 | src/officecli/Core/PivotTableHelper.Render.cs:478-485 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:417\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c796ded8729c21b575662678c2f6200afcc167198887061ca8f8f03e948d49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:642-649 | src/officecli/Core/PivotTableHelper.Render.cs:963-970 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:642\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc075ac216f06f40326b697e9db64b45955603fe8256153b45a89c48baec43e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:662-669 | src/officecli/Core/PivotTableHelper.Render.cs:993-1000 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:662\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52d8cd4260f5bea9f60ed78d4950709f85950b5fdedf90977f972f7e8ef579c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:674-681 | src/officecli/Core/PivotTableHelper.Render.cs:974-981 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:674\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"06e0e362dfd03b30861c5bd03ca189ab5e72b5e8ff4a44af39383f32c9f6cc54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:2478-2485 | src/officecli/Core/PivotTableHelper.Render.cs:2522-2529 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:2478\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":2478}}}],"partialFingerprints":{"codehealthFindingId/v1":"777e643b4379b27a89f536b51cdc66631a2faa2fe2b0c176d4c4c3c359ec8481"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Ole.cs:27-34 | src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Ole.cs:23-30 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.Ole.cs:27\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Ole.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"645feed4db3d0116556bc4d5ec7ee2c04c0b140dc71f07ba40793b90ed762491"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs:4201-4208 | src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs:4209-4216 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":4201}}}],"partialFingerprints":{"codehealthFindingId/v1":"034d1e72fb376b433dec1adc9ef549d29486557635270a88ddc2cbcf39f7410b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Pictures.cs:32-39 | src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Shapes.cs:34-41 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Pictures.cs:32\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.Pictures.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"9db9a03bea64b13a1f30f3605cb86dbae82856d2222636f4312067d1d2da5fd3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:113-120 | src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:136-143 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:113\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0008f08d8c41b08c51e52cf97fbd1cd532ef18a62d725180e0da3f8e5f7c459"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/PowerPointHandler.cs:2527-2534 | src/officecli/Handlers/PowerPointHandler.cs:3144-3151 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/PowerPointHandler.cs:2527\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2527}}}],"partialFingerprints":{"codehealthFindingId/v1":"40d4910929f4ee25510240d6c090d3456843887381c4dfebe812ac25b17e53cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs:815-822 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Table.cs:244-253 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f7cbfcc3c7d0c2cb9bd329ceb65d63c150a84c87c1b5202966d32f4bc62a8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1971-1978 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs:59-66 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1971}}}],"partialFingerprints":{"codehealthFindingId/v1":"3101c9003fd5ba4d9b2a519db5bb43bc85e452056789804e360e8ff3e5e05664"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:64-71 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:101-109 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e8440c7c17c71c989be256db598be72b0cefb17485d028a7e45efe1abb6931e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:356-363 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs:750-757 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Text.cs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"3afa9272dd06353e5e0d01e6dead36f446be49bea66c5d874b0f6c4c2e1be8cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1922-1929 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2009-2016 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1922}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac90e9981a811ab3440f81cfd3dfecb396b43fe4362e6b35c4d87449a8229393"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1980-1987 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2121-2128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1980}}}],"partialFingerprints":{"codehealthFindingId/v1":"61518cbf04046ad2374b98d141f4def7fc35de7bd767b08a29e88aeefd15ad27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2808-2815 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2827-2834 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2808\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2808}}}],"partialFingerprints":{"codehealthFindingId/v1":"386e4e36a76266387915cf00c0981994670c06f948ebdc0d64c10de2e168c789"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:123-131 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:283-291 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:370-378 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:432-440 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:517-525 | src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:634-640 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs:517\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Cf.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"65154e787023746d1c2b607c06c80f6bbd1fb818eebcca246672d7e8bdbce73e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 5): src/officecli/BlankDocCreator.cs:543-551 | src/officecli/BlankDocCreator.cs:562-568 | src/officecli/BlankDocCreator.cs:581-587 | src/officecli/BlankDocCreator.cs:600-606 | src/officecli/BlankDocCreator.cs:620-626 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/BlankDocCreator.cs:543\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BlankDocCreator.cs"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c02ade7ad6fb4d7e6e6f6de55cab7e10e0e10887933a95f13b4d1c9b300ae49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2067-2073 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2095-2101 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2147-2153 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2175-2181 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ca14e451218284c2ea62459ef23885a0f986ef321046ca9db3288b9a068b3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/officecli/Handlers/Pptx/PowerPointHandler.Fill.cs:288-295 | src/officecli/Handlers/Pptx/PowerPointHandler.Fill.cs:309-315 | src/officecli/Handlers/Pptx/PowerPointHandler.Fill.cs:378-384 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Fill.cs:288\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Fill.cs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"101cb9637d34c34a21afc267c3379f826ed4517d408e045de010e3522e3a9f3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2772-2778 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2807-2813 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2826-2832 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2772}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f7835a40d323b5bb812ab62e0ff9355b0b30412fb0b57036f0e07d39996bb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Reader.cs:622-628 | src/officecli/Core/Chart/ChartHelper.Reader.cs:652-658 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.Reader.cs:622\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"051472d60b6ea1064e9d8bb16a09fcb8b6bb510fb21d0d93bd5b8e18c953ec29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Reader.cs:2363-2369 | src/officecli/Core/Chart/ChartHelper.Reader.cs:2371-2377 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.Reader.cs:2363\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":2363}}}],"partialFingerprints":{"codehealthFindingId/v1":"8747bcbfbf9e82c776371713b42bcebf63131d1d5bc9b4ed51172ec1856dcdc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:509-515 | src/officecli/Core/Chart/ChartSvgRenderer.cs:770-776 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:509\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e90f86373669dac77b236fcb6ae971ae177eb5bf003141f9fb2bef8c7506f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:1925-1931 | src/officecli/Core/Chart/ChartSvgRenderer.cs:1982-1988 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:1925\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1925}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f42f9415607baba3252babc71bc10927f29bc15fdd358378d9234445c868fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:94-100 | src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:103-109 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:94\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3c72e1acd46149b659916443f7284acc99d14df4495dba7b8408c11359f60f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/Formula/FormulaParser.cs:604-613 | src/officecli/Core/Formula/FormulaParser.cs:618-624 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaParser.cs:604\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26fa96d5dd42d37ac896401b8791942cf64bd865fb63269b884864ce1a6399e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/Formula/FormulaParser.cs:3272-3278 | src/officecli/Core/Formula/FormulaParser.cs:3284-3290 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaParser.cs:3272\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaParser.cs"},"region":{"startLine":3272}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b47f6681a683a547d51743bca68936b9d75be5c679a6827c7b82e3276790bae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:653-659 | src/officecli/Core/PivotTableHelper.Render.cs:984-990 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:653\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4adccc99a723a65f494c549a5f7151bc0fa2a6aece8fce5fa6ef086499cd059"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:1212-1218 | src/officecli/Core/PivotTableHelper.Render.cs:1676-1682 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:1212\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"056e69e71e336ba20564937fec92f1268c3409eef8cdb6d575ec7dcb80c4f42a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:1357-1363 | src/officecli/Core/PivotTableHelper.Render.cs:1378-1384 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:1357\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1357}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c485c9a7336f2e9e06084dfe22f8f37efcabe7edfa383067760256e57238bad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:1368-1374 | src/officecli/Core/PivotTableHelper.Render.cs:1416-1422 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Render.cs:1368\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1368}}}],"partialFingerprints":{"codehealthFindingId/v1":"143d09227f9718c55bd3cb13e5f1e27413aeda66a26ebad4333c400872e5d419"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs:736-742 | src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs:843-849 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d466c40c271b5a9e79dfab67d14d57fadf7e4d121927d447a29879389fc4f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1185-1191 | src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1378-1384 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1185\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":1185}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce8f4dc521e39ba4541165fe336e4cf761760ed3ca8fa2bde909ef464e7eaed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs:601-607 | src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs:620-626 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs:601\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Ranges.cs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3ddaa21fadb6a28febe4bf25fe3590d71ca2748641aa21f7a89127f9ddc8a8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:282-288 | src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs:299-305 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.SheetShift.cs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"2446c18b0882e76c2ed7d5fa1f8a070308d0693d02800b9b8add50b351e2ac1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/PowerPointHandler.cs:4174-4180 | src/officecli/Handlers/PowerPointHandler.cs:4896-4902 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4174}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd87427388c09dd4ba094653ccd300c8ab57d734893f81cbdbdfeb4d09d9b77f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Align.cs:105-111 | src/officecli/Handlers/Pptx/PowerPointHandler.Align.cs:127-133 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Align.cs:105\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Align.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe13f6457d57010b08b3e8cab4dcbbab9116ec767df6a95b14d389bece5118f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2667-2673 | src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs:2716-2733 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":2667}}}],"partialFingerprints":{"codehealthFindingId/v1":"72fc52a242d9bfbe20a73c5b191a0ae6f90dd1d18f6dc63d8d0e26ac77596aa2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:78-84 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:98-104 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:78\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d9523cdd321943d1cb801773b0f56a193eb754378f2ccb5d3b3a9f30cb01e1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1690-1696 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1713-1719 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1690}}}],"partialFingerprints":{"codehealthFindingId/v1":"e734b274a5817e049ffb8196fd0e03207358217c53f4d8075bedc5c4c0dcbaa4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:328-333 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:338-343 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:348-353 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Securities.cs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed37aa7ba4f81571cf3e83adeeb3fb19e97ba4026ebb514a951fcb1ae750d867"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/officecli/Core/WordNumFmtRenderer.cs:426-431 | src/officecli/Core/WordNumFmtRenderer.cs:542-547 | src/officecli/Core/WordNumFmtRenderer.cs:568-573 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/WordNumFmtRenderer.cs:426\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordNumFmtRenderer.cs"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"953e53ff707f9f7853e16906136a8a76b28add30158e62f3186bcb114572790f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Builder.cs:1256-1261 | src/officecli/Core/Chart/ChartHelper.Builder.cs:1266-1271 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1256}}}],"partialFingerprints":{"codehealthFindingId/v1":"107a8a54833fbfbbc1d1f451724b0f2c1addacb59d39c2ed4076b11b2b0914ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Builder.cs:1268-1273 | src/officecli/Core/Chart/ChartHelper.Builder.cs:1309-1314 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb3f13affba79b6f7598ff5f3504b9e640368d0f5baa9b155f886f6794a2c3c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Builder.cs:1598-1603 | src/officecli/Handlers/Pptx/PowerPointHandler.Fill.cs:417-423 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Builder.cs"},"region":{"startLine":1598}}}],"partialFingerprints":{"codehealthFindingId/v1":"e03fd08967aeca2f958bc1e2edcf9178dc20d1be84469cd245b0e8e63d8d21d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.Reader.cs:2126-2131 | src/officecli/Core/Chart/ChartHelper.Reader.cs:2136-2141 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartHelper.Reader.cs:2126\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":2126}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6487dccfdf5d9cbe25739c7cf063cc2f533f526163941cd6f1b601fc0d60646"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs:672-677 | src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs:1166-1171 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.SetterHelpers.cs"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"b43d315848e809e8d9b51d03acab6356e6be4cbdf5f191b4640fc552ddb9ebca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1017-1022 | src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1035-1040 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"17aff11bedcb5485b455382077054f4202ea14f37d3cdd226e461ee8883ff93f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:173-178 | src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:253-258 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaEvaluator.Regression.cs:173\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Regression.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"790a3c7f8c6d999076bcf37958512a98bb1bc4ffdc9663915add829497c59ed5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:300-305 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:315-320 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Securities.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67e834acb0311cedc166f296cd47253815209b1c617bfe2172e3c3b1d51bfff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/ParseHelpers.cs:130-135 | src/officecli/Core/ParseHelpers.cs:147-152 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/ParseHelpers.cs:130\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/ParseHelpers.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cc0a0dd9bb32411668f6a2cb2ccd9ec2c1a581b5de43ea28de9b96ffb1b7d82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Definition.cs:782-787 | src/officecli/Core/PivotTableHelper.Definition.cs:788-793 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ef7be20a183bbd34edb3e17537a74930113f598f572c59b088be9311045952a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Definition.cs:918-923 | src/officecli/Core/PivotTableHelper.Definition.cs:924-929 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Definition.cs"},"region":{"startLine":918}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc46c58b20b6269ff88250045ca1588365c8b17e81341eeba5a375cde4ad254"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Readback.cs:69-76 | src/officecli/Core/PivotTableHelper.Readback.cs:81-86 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Readback.cs:69\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Readback.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"0daddc0e2f08a3361d015c0dd6db7f5c7e35b8841861bebf665dfa6a330be3ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Core/PivotTableHelper.Render.cs:1794-1799 | src/officecli/Core/PivotTableHelper.Render.cs:1800-1805 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Render.cs"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9479c32fb7699977caf3686528efdc4a5590dac27b05170d25e5254cd252bb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs:235-240 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs:244-249 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Cell.cs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f66401670512264cb765a9e2f9c0131c537e06d90a5f107e01f4e0b8ba5ed5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:165-170 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:196-201 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"810d4e6b9295c8992ada600d4e1a62f60a2a1875a9da4be985c21f8147c59377"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:182-187 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs:197-203 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Drawing.cs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"6368771c98a46d13bff1107ec24ea519db848679e952816811b20e2e88ac2cf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs:843-848 | src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs:861-866 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7b9e8a75a3c46d2d3b4fb7aa2085fcf27d464f9476c63ef38882f586538b2b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs:1396-1408 | src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs:1410-1415 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbec2b69d9f20d34829b24b5a80742679dd5fb1fadf4cb693210bdaeeeaec473"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs:195-202 | src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs:206-211 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs:195\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa1394688db7804f2831e14c078e6a4659f04b9093e546613defc6c31fdc208d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1119-1124 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1127-1132 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1119\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c03077e64ef61bb68d7d8c9fbdc47265637a5681b0a3afdd6fc0bc9341a22f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:519-524 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:529-534 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:519\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1117b453864f97879deb3cb63dffb406b0a13ff5e8929641fdd0af8545938ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs:623-628 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs:636-641 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.cs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7dd6088ef2d39b71cb3a8fa5b7fdafaef83a4b2e3b6681820c5863c9a23391"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:471-476 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:484-489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:471\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0173cbab6e7004a88fd12eb5f4d1d9fb2f29e138d200354d74390c27ec2012"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1099-1104 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1113-1118 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:1099\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":1099}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f610d093ec7fec9c582bde25293e195e88aa3a7bccbcaf552de754e62415a38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 5): src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:242-246 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:253-257 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:263-267 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:276-280 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:286-290 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:242\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Securities.cs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ea2b5245b7145840a62c85a1d6c9ec4179e62e5a5763c89ba9333fbd701bd86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/officecli/Core/PivotTableHelper.Set.cs:447-452 | src/officecli/Core/PivotTableHelper.Set.cs:454-458 | src/officecli/Core/PivotTableHelper.Set.cs:460-467 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/PivotTableHelper.Set.cs:447\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PivotTableHelper.Set.cs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2fad320e416e23071685859a312b6fcbf7ac49b51ce3e62c8399d793b3cdf20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1001-1005 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1006-1010 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs:1011-1015 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Misc.cs"},"region":{"startLine":1001}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fc2c8ef540af7aa8275893dbd7a18c85dc610182a797321c6b0401741c98d95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:504-508 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:521-525 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:531-535 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs:504\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Shape.cs"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab4c82d3f484e96c2fed461db2ec4f285aa7029efeeb6d2f1aa3ac626de825b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2137-2141 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2162-2166 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2324-2328 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:2137\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":2137}}}],"partialFingerprints":{"codehealthFindingId/v1":"d47851add063b3af3628f3efd63c3388a3db3c05f1f1a12288a2b2f7e3afcac3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/CommandBuilder.View.cs:327-331 | src/officecli/CommandBuilder.View.cs:605-609 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/CommandBuilder.View.cs:327\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.View.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"38bef206aaaf1c4eae7c4db3ff71f4ecf475c837cbc1a3f5c37e44f9d07ecf7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:543-547 | src/officecli/Core/Chart/ChartSvgRenderer.cs:796-800 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f44392f7583892a00da76cf091181c254c737835e26228796a16eee3159e87b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:555-559 | src/officecli/Core/Chart/ChartSvgRenderer.cs:813-817 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:555\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d402d44184d1556af66e406c2c7f2dcd543615a24b86d52f2785b03479a6142"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:657-661 | src/officecli/Core/Chart/ChartSvgRenderer.cs:945-949 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:657\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee8f5cf0612edf38e3ebfe07c1d4de2e19a6f34080a9733d5068112b7963d822"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:830-834 | src/officecli/Core/Chart/ChartSvgRenderer.cs:872-876 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:830\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8f849f4a99a52bec4aeec5edf6fb6644fc5bd49d843c42b0aeb80371b11116"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:1409-1413 | src/officecli/Core/Chart/ChartSvgRenderer.cs:1416-1420 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:1409\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1409}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d76f87abe53c48f662285805d4dfed1d7ab9e0e3df4b7b3be6bd411a5c1260"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:2101-2105 | src/officecli/Core/Chart/ChartSvgRenderer.cs:2108-2112 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:2101\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2101}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6694e97787ee2c80195551468c2fcef5733d71940c8a3ff35516e0ff6faf28e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:2937-2941 | src/officecli/Core/Chart/ChartSvgRenderer.cs:2961-2965 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.cs:2937\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":2937}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b2bf009189f47f320e90c92ecb52b18b93e62a11a6851cfa7c10319f787b3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.cs:5538-5542 | src/officecli/Core/Chart/ChartSvgRenderer.cs:5549-5553 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":5538}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9688b110c3689f31c6b7332b73b4914845b843807ff8e7c0d6beee067aecf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Chart/ChartSvgRenderer.CxExtract.cs:397-401 | src/officecli/Core/Chart/ChartSvgRenderer.CxExtract.cs:438-442 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Chart/ChartSvgRenderer.CxExtract.cs:397\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.CxExtract.cs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0bc33240c3da10034f6cd21726bc27c8fa188b56b59106dd1f5c3400a6fcccc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1145-1150 | src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs:548-552 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1145}}}],"partialFingerprints":{"codehealthFindingId/v1":"c59c98076b58a2e4f0b2b1c50f4c4d72d191f35f1d30fcc5cec5aad0a3102cae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1348-1352 | src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs:363-367 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1348\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1348}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8bdf5b39f970ef89e4081fd360860411dca9152e229e1a582603707c2ca235"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1706-1710 | src/officecli/Core/Formula/FormulaEvaluator.Functions.cs:1716-1720 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1706}}}],"partialFingerprints":{"codehealthFindingId/v1":"a69544deaba23c40e7cfa1c83ec0a613c8803cee27b7fa38acc3d096b7d165aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs:405-409 | src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs:436-440 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs:405\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f07d546c5e97415ac0641eb48ae81c0fd85760dac8c514f4bb71985239b9fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:217-222 | src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:231-235 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Core/Formula/FormulaEvaluator.Securities.cs:217\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Securities.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"e186d1667158073509120acdb990ed5e2ef0a3edd4ef2770a091ded7214e961b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Spill.cs:84-88 | src/officecli/Core/Formula/FormulaEvaluator.SpillLambda.cs:101-105 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95a8fc317934d5258125afa62a8d0890e05afcb35cf341731e7670fddea6c27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Core/Formula/FormulaEvaluator.Spill.cs:97-101 | src/officecli/Core/Formula/FormulaEvaluator.SpillLambda.cs:85-89 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Spill.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c184165b26f64af4218ecbe6badbd3f3fd504026dc28ed6822d1d8108ad2b62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.cs:1246-1250 | src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:364-368 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Add.cs:1246\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.cs"},"region":{"startLine":1246}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb54e6466d67177b4befeb9f7ba858121c9304c1336efbb9e468ec4b6434712"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1579-1583 | src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs:1591-1595 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":1579}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fab051fa866525b4397a36143dc7b23c1b1a640ba79d0eaf6f21a54ac183e8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs:424-429 | src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs:778-782 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs:424\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"70238b37c10d55819cbb8374da59337f04005d9931487541e7f7542fc9432516"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs:83-87 | src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs:89-93 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs:83\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.Cf.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"8790b6a85d65c235e36edf5c509583abe66bbc9de6dd05c69ca7cedc26700e91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Handlers/Excel/ExcelHandler.Query.cs:427-431 | src/officecli/Handlers/Excel/ExcelHandler.Query.cs:433-437 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Excel/ExcelHandler.Query.cs:427\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99bb89fbc1c05123de8348e0e7a23de85fda05ca17d26d584f8d2c54a159237"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs:105-110 | src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs:66-70 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Media.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cec5f8b16d23174709ed40e3ce5ee3fcbcd1b13134ab7d21b09c7d4287fa054"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:861-865 | src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:876-880 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs:861\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Css.cs"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"3042630e820fe0cc6eecf01c7e2d09fa6e8cb9b402d2a5f9f05b84e08e7a1edb"}},{"ruleId":"D8","level":"error","message":{"text":"No automated tests: No automated tests \u2014 no test code was found in this repository. Untested code is the largest single risk to changing it safely."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3132564c6310e5d01a231f252a02d5d2f5a542c0a8fa29a14c89693f1e3df871"}},{"ruleId":"D9","level":"note","message":{"text":"No tests found: No test suite could be collected \u2014 nothing here references a test framework (xUnit, NUnit or MSTest), so there were no discoverable tests to count. Tests written as plain executables or shell/PowerShell harnesses are not collectible this way and are not scored here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c9bf64cbb5a4ae13d6bcd01fa3bc8d2879d860c73bc67f176ee3c2cecb8adce3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Handlers/Word/WordHandler.Navigation.cs: src/officecli/Handlers/Word/WordHandler.Navigation.cs changed 195 times in last 90 days, max complexity 468. 167 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76503bbf45ba75664fbc65a8dc754e1268d43df56b5d878089f31fc444399c96"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Core/Chart/ChartHelper.Setter.cs: src/officecli/Core/Chart/ChartHelper.Setter.cs changed 96 times in last 90 days, max complexity 805. 87 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Setter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0dee2128da7411808cd881fa04e4dd19d411704fe862de1fb0fb66104bd21b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs: src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs changed 103 times in last 90 days, max complexity 565. 92 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a23c4bf2e9fa133531bca8f2b5c8c904ea9317f444dafd9aa93c6491c721e1a0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Handlers/Word/WordHandler.Add.Text.cs: src/officecli/Handlers/Word/WordHandler.Add.Text.cs changed 91 times in last 90 days, max complexity 543. 71 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Text.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0735da40ad36ac95ad1d5f85a23f2b9b140df4641756d9744f0d984058e9b230"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs: src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs changed 137 times in last 90 days, max complexity 346. 119 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.NodeBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3364437a2879058c6eabc0f8e536ffad3d85164dfec089d6233570e5b7a141db"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Handlers/PowerPointHandler.cs: src/officecli/Handlers/PowerPointHandler.cs changed 89 times in last 90 days, max complexity 461. 71 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8caaf3b1142f0ed6f7176c75c80d9c16695f1450d9d35eb379d2b2e00d6d2c50"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Core/Chart/ChartHelper.Reader.cs: src/officecli/Core/Chart/ChartHelper.Reader.cs changed 73 times in last 90 days, max complexity 396. 66 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartHelper.Reader.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62d7481b68964a603265a6b96d65087c27e6961bcea4df5f13733d8f09d4e2b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Core/Chart/ChartSvgRenderer.cs: src/officecli/Core/Chart/ChartSvgRenderer.cs changed 108 times in last 90 days, max complexity 241. 102 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Chart/ChartSvgRenderer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f0ebf24626aa1c9ef5dc89c3274b183b6a20c7776e17cc067fe35f4511b3fba"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Handlers/Word/WordHandler.Query.cs: src/officecli/Handlers/Word/WordHandler.Query.cs changed 62 times in last 90 days, max complexity 401. 46 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Query.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b390b7364bc90df00d0ce3ccf8a093446ffb4de53ad1151824f9204437fc5971"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/officecli/Core/Formula/FormulaEvaluator.Functions.cs: src/officecli/Core/Formula/FormulaEvaluator.Functions.cs changed 45 times in last 90 days, max complexity 545. 27 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Functions.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f6cc96fdf3877a68d08184566d7c74ffd7b58ecc467f6a7b6eeb94fc71a21af"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 283 significant file(s) lose their only recent owner: src/officecli/Handlers/Word/WordHandler.Navigation.cs, src/officecli/Core/Chart/ChartSvgRenderer.cs, src/officecli/Handlers/Word/WordBatchEmitter.Paragraph.cs, src/officecli/Handlers/PowerPointHandler.cs, src/officecli/Core/Chart/ChartHelper.Setter.cs, src/officecli/Handlers/Pptx/PowerPointHandler.ShapeProperties.cs, src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs, src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs (\u002B275 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"07675611df153c0df31861f19be7ef493b50a732dd33e340c4c51de3b8143175"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/BlankDocCreator.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19dde45bde091999dc9ef270582755933a19beb6dabe942c63a6ec6b0dc1a4f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.Plugins.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d136d4466f6ca42006428dde8a01862b4dab1a7c81862ba122512839cedcec"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.View.cs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff0d4b80df75b1a8209d8816c58018d392c877d9173a1fbef2df65590971fca"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.View.cs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"102964e85ed7e9c0b9f97b0692f08d35a04a6d13556eb65a3ce9cf2d0e60cea2"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.View.cs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f3b988d4ae9ffafc40acae6ac5d96857f0f220c1555bf7b744107447edbca3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/CommandBuilder.cs"},"region":{"startLine":1889}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc8235fff86c82a0aea421a6f5af36ee018b7b27d082adbba4e99d842408b52"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/CliLogger.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f272706899e0adc4e8d1658eea8c0b618ace20280c23bbcdecd39443d6b9238"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Formula/FormulaEvaluator.Helpers.cs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"994e1d7b67130299ce0f5bbbb1fc23072ac5851d2e36718db905b70cd00431e5"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c08320e1552365c05f22fd5077cf8a3e533e5674406aabeb5fc29c952cac49f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"1261677b900d44ee8de7d98c96e63a8a8cda636501dea051a3d39ba573915d34"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8c7437814ca348ab73b5ae49ed127f5906716472f1e5949548909b4d801a9d"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceab9100fa2b3889e18d0ebbbfd9cd297d16dbc1da15e33c351e045a73edb0dc"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"52fa607ba729e76bc2fb534b90c701ac9026d9513d0d20824e3a13ea7b5aa808"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/HtmlScreenshot.cs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"a545df20eae467680db13cc04c30d5a7e9f3c52ba8b0791fadb50b626315dc64"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Installer.cs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e659b942ee2a9cab6fac059e5b33f85205e770e828690acb11f18dba06b3e0"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Installer.cs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d809474b0485c978812b0be046ede1efc01ddf63c752fcb6582c2c41faf2131"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/DumpReaderInvoker.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f84a63dffa799c4a8312b2776cacc0dfc8b8815d176ef879ebefaeb79b39e2"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerProxy.cs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"fab8070b5ab6488ea9a8218d885755ccec50cc0b63d7eeb2c6ad16a9bc732329"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"e28a0873e090a763d2e462024c7ed8e88d4cc7a3c24be6f69ddb416e1c262d20"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"89b863bc1727353ef4dccf0c66e67c4a1107f302bcde2ba7310f5c0c58e6386a"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"9219498d7cb574edac0f3adb4dee757e1e966352205a16399a7cb18d951f610a"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"245ca09bc3cb621fcc255c0cc1a149456efe3851116ae6ecfc40ea80cadd26a4"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb706f13ecc89b6b9628886f36397707c08b3896fee92a6dd27fd5f9b046a65e"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"773f6dfd4121c0def3427617d979f6d49d5e8fe13f938bc8f2c04cb1b84686c9"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/FormatHandlerSession.cs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a52b735548c919f37dd5d2c1bfd159782a8f2b6f0cb3535584e8ec5a45adf11"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginProcess.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"8220b732d2f5c76b2363e74e82a7f1658e3ab3d8f0b30d2524d591fabed2e8c6"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginProcess.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"41d8e1cdbd57b04d6ff16c31d2a1be17a86a430a54c98973d4531c38e59cda88"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginProcess.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3953ffd348e64a09f153f2be7cf93a5be297a096a6ed03aa3e6b9efe5ebc11e"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginProcess.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d35bd9447d1a6e38e4b01649eecb5ea08f31b1199fe9800cc758b37d174154"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginProcess.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd1991328fdef41035cf9f0f3908a3986d5da18b2504e7511aad586c94d080c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Plugins/PluginRegistry.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"39ed578f4ad0f3ea6efcc166359d539be9c4d7406892e9744a883dfca3d9a8c1"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PowerPointPngBackend.cs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"90cad5db2fcf95352a17c928e47c47347af26711086a43b78b93bb056c1952c3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PowerPointPngBackend.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd640731bc817de9342597a2e71e6db93647cca4087f2a0e6536e20d62a813f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PowerPointPngBackend.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"2848ca2993f7a97c682b286cf692f1fad0402e6a8e91219a26ca194c728d30b0"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PowerPointPngBackend.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e99baba86940c26014766582bd2787e172ca41a39b604563d7bfafb76b01a6"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PowerPointPngBackend.cs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"4660ba6e9c152019d678c71d5716746ff84c972540858a0ab24731d916bdb9be"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/PowerPointPngBackend.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"93efe6496e2503c305e40d505c006e9af26f678fb06e8d31a7d2855be417cb09"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"579daea63db6783063038ff713eeef1f119b0f519246ac805fa900c4c58167ec"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"940241e78b7a8244a8dceedbec337b0311ec646c7292c9455ab41e4c4cf39add"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"70cb2c300f2f6fec79160562f3b936f93b8f8e18b476ecaa75888ab3b6f44957"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"65e2ea7ca2ead60c875113486091b93c073eb1046a357d39bf439a279b51272f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"553b106c9b791db659a76696d1a6883a1b28d588380a70420db0a1ede918a4d1"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"751119942107fefd927725ef6b5197795959b571e3c3cd4acc9a26ad6a7e351a"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"233b9a859bc2a60a50265eae9cbd12a8b8238f621b2150d48ebc2a72b3390a1f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"58076eb3893f77036bfc256d3a27f804074225f2cda8d7d56be49e01b8af3c36"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ecfcf0f7eabd6c85e1ae575fabf6354b3905701764b8fde96b47a5289f8fbb"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ab550d47a68fad7ed05b9a03301fd15669519bae32f1f5ce30dbaa747d9f47"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a1ce383af564b257963f1c0aff3158eb8384d2f3dcde7d3d9f376111829c7f5"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa857c96d2091e067b4cf521f00da4543b50e9fa7775b569afa47993924f29f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf69251657faca96c8db0dbc7c917b2c47fd72db13946c1c66a36b25fc00d716"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"4373b30b2624f25bbee41c25ac9860d17f9444629e81fa8ad8372522aa3cbfe7"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"464d09dd412d54e86f4a4383afaf3492b27a37ee019f1dc4a34572e051c77226"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"046aafb245085e56ca8d9586d624f777b99e8a6eb93f55118621d3bf6c2b63a3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaf50e6c9859c2a5ac2e710aec6bf8c6b8a41432c267b9e75f3aadf8f922376e"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9c10313fd409cb76be997a98965d99225e53a5159acfbb56eba0f8fc1e3a83"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/UpdateChecker.cs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e921e1df8205b20fa5a11b308c50d1f5d5dbfc616b0fb302217be2869796886"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"1191efdb2ccc2a1edec8ea458a7db6856c477565cd20f5fd016f92a931a152b3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea9478dd134d3f657440129bbadb611d127e093fa58edd660d208eac456867e8"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bea7ce02a004c77e2a5997601636728dfcfc0ef9dc8a0dc9cba2cc446350ad2"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b9eebbecd5019eb8d1830e76149ad859a1acc37eadfd431d57d8c0607087160"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"b770001f315d3f901613703950aa0b09fd77b9a6371ce9886da85d2eaeb77934"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"5442f2ba9455579f0f34c5a0132419f0ec71ed618708465b5e2ba4ce2f5f8f6c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"41280839dcf46260fc0942bc6af1236fd22bd2853d56487fd9dac0bda95b1a64"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1287}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bddfe5c0240fdf1fa232bdea8dcadd082d6c4ea5b6e3a5393f3943b089183f1"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2034}}}],"partialFingerprints":{"codehealthFindingId/v1":"da0927dece3411b558d95f071840f6db75a88c29a3c7b515e550a797f61d6dcc"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2709}}}],"partialFingerprints":{"codehealthFindingId/v1":"773efbceeefe007a05a10233f01cc42c9d7db9f311945a80bf51aa467044bf30"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2734}}}],"partialFingerprints":{"codehealthFindingId/v1":"d33e1d0a5fffac04d53d6696a0bc88e44ca55ec2e494f5e403e970f1bf34d775"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2768}}}],"partialFingerprints":{"codehealthFindingId/v1":"7164a153a1f8fcb912b51fde4aac73922f7b56da3ccce1a3aaa44b12f0002eed"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":2777}}}],"partialFingerprints":{"codehealthFindingId/v1":"c85104f1f079130bdd27d788218826a7f7d8ca23e43f029b9c35bef0c6f74298"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":3019}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd0f3054fae7d2336c27b69c7e8c73198fcd31244b4c914da195ee9658c5d861"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":3034}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef2ff91857b11cce46ef1458e6c3ca345c03c453af20cb0ecf6174402dc9e12"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":3062}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a08d0bb46019fc2ec29ad99dde06853ca1c003f6173b65f1bde1775475bb863"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordHtmlRefresh.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"dac2ad1a3ded39ca89ebbe9021de7e4f5ea5f061866b755f3e0bdf59707fe533"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a8889cb512cba5dd08ab1bbdc4bebccb3be88e40cbe4bb0e420608bb5a1918"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a498c1e28e37f7c79f49ae1f96f3f59edca6054e06c9ba415c2b5d031aa3696"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d1d0249a1cc919fb030a2dcd97c48626cc9d9c2dece1668f495c0d6c79eb7ca"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"233caa0e232f022525a08bada9eb29b837f47860f78527473e798af6a431776d"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a58349263a90961c99af6d9a54729a3c8dae7608af1cc43d5874a59528843c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc9c20570dfa98d839b33de9ac2c77571c96221c5d91f130f2ec4f516fd935d4"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9c4b76656ce18ccb742538c9513daad851d517ef65a157e8f79bf703d1e761"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba2878f9303ab8efd7795ff5c7899a08cb04a84273231fff340ba48038605e47"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"88caf33e7411858ce240dea41e6e9e48ed9bbf07c5975f595b301da9428219bd"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cfca6bea74286881ab0dc51946cec6b5120b8676f1a3bccb74f3391e5753ab8"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bc23939764924d264e419428fe7326f94d87db3c15c1daf4d3d5efeec3ea72d"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ab3eefac2dde1e896799a0d2777881604e5fbf0a919b2d5bc770b9c2ea8d06"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/WordPdfBackend.cs"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d10fe7b1ae9aa4b5097be1db34a272654b976bac1e743bddfb23d61375af89"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Drawings.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c7393d382051a75cec99a6d07ee48ff60479a03ced6d10a10d6f411d13e270"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Add.Tables.cs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"2086f6d4f11500c80469d074a6a6e86623d5d8783fced194c463035bdc84e555"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Helpers.Node.cs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8399f0d5a199fde3d649f6fcddd8756dc5926dae5183b2a8324fe15b48eb64f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.HtmlPreview.cs"},"region":{"startLine":3756}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ad5b751cd8ff0cec2058fa7c4185ee95b238897026e1ae0655e5c8312f6697b"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Query.cs"},"region":{"startLine":1832}}}],"partialFingerprints":{"codehealthFindingId/v1":"12dac9cb456266d5977459ae26548a48346db8e55385a459e8981db2b463bf80"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a04d1b225d68805372080309275245f52e90d88dccb8ef7e7ec5b54ccbfd40b"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a8e700811451683fd0f2fbd5ec183e61884ce89cf180005a9d140660367c5c0"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b5467ed0f876ef042edc3df5702b05b69e2373a2588e4bb9800551e83553e3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e0ec75e7b980f21041af792e2614ff258212dc6513fa802b8f7448f173b13f0"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d31d0654066ca5abc3757579b1dbe00de3092b931e5b42810e581d341f7fd6b"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"085ca38b016dc2a17f40669a47277d0819513a21ef95360fc20d8d1cc39e4800"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1851}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26ac9ff5a07c56fb4d47f1be97f9680963aee067baa63327bed8c82013744e1"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1865}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7f3c9d85928603377ebac3ffe55dbfb5a68d5d25f941c33b9ef77165be09fe3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Remove.cs"},"region":{"startLine":1870}}}],"partialFingerprints":{"codehealthFindingId/v1":"b56d16c1a417218e1ae3c28bea224951b56fed74192056f271dac737b502eae9"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Excel/ExcelHandler.Set.Drawings.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"0369ca29d408662c4d647e290522e72677cf51282b102e79e2a6715da73c8ef7"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2380}}}],"partialFingerprints":{"codehealthFindingId/v1":"60e544355bb20dbefb39defdcd741bf90be0a582b173f0fb81802cf46abeff29"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":2405}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e084d4bdf2aaf75cd5ce66fe65593eaa5279b93b95e4920e0b208897e31d559"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3352}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2811994ddc141cc61d1c955620b30b712b38be869c6c5b54a80a1fc694c607"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3382}}}],"partialFingerprints":{"codehealthFindingId/v1":"c16c3cb51f0090c7feff546ad527851a0eb371400f88c1dd2cdf89f9e4ebfc7b"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3384}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2572cb5db8e4415aab2eee441ac390318597b368387339b93b7524243ff0f09"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3401}}}],"partialFingerprints":{"codehealthFindingId/v1":"0326593325fc224c54da21d12978a9ba6bcff6aa9402ae9530b0987f52ffbd38"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3402}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb35123a988af26ad0ccc6c5baeea5fc373ba472f5f641578b9b48a29cd9cfa8"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3551}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d40a4d65a6f3a3257fb338bd9f531c3ec2fcf7f1403e837b7556892ed79c80c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3639}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d1ca63c4cc059759fc5f45659c54a8cea2a7363d1db7aaf59d8d349ea1dabd"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3657}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c8646bd87b40a704f01836fabd4e9190ca1acdafa0bd622ac2f23416b61d31"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3787}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb98cf07388ddaeeb56e496a75e293742820f848ab495a1869592d8decb2763"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3941}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5887bd6848fdf48fccf9b3fc7926231d949706d564df55c2782a9745c570e42"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":3959}}}],"partialFingerprints":{"codehealthFindingId/v1":"efc65ea462f1044c38a12b7b8d3be807a32bff274490b0f14ed0634e6ffb3e28"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4087}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a580ee10f003a70caf7b5c151f095589d5c83f448290cb2bcb98ba3d8ac2e9b"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4111}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bf6266b973160db13e44b380c15658d1efc9dd95b2827f7293e4054e88c3b3f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/PowerPointHandler.cs"},"region":{"startLine":4145}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae27522335a29b9ef22c954bb4bc6086d5f84eccf10a9120d02ad7723ed2bb37"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d8ba17bfe9f90ced45f611c1b5f671071ba23fb2cd76254d8817a94c27e22a"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Add.Model3D.cs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"e918d7387550f2fc30b23d154f2b811c91aa815c7984eefa94d9d8274228a882"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e326827e6a350ede11a3d4e0379ed0680aa482d15bee7b88fcf60388a8cb49"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef193939cc35d24d3c798dc1d3b45bfdd9c749236948266382eeb0aa6b1055b"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Animations.cs"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"b88d527333423f2d94520a386235092944f53fb883805ad0a77f28f426a5d8e4"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Chart.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"ede0936aa5a32917314681dbed527630399e4d110e9ce2f96e9d6a3283021c36"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Chart.cs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7a44d4d2453b369611cadc197b6adb6699b89959cd2b806e325e81e457995e"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad0455bd04922003359efb6655e2a661b146f500fa6cb645054072a64a99f27"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.FindReplace.cs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"a155dd2ab3f5f8c689bb240bb343ffb332ea1079da7d5531c16cfe90cc1e2153"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Helpers.Text.cs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"30388a244ab70b940143501d5b14fe3602994971ecd10c958b22f1985732f4a8"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a9dce809572646c40d36bfdf56a486ae2011b74e2d60d6f741968b18079ed2c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1430}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a789da5dba392cbcbd564d201e0c7d4fb549e1770447b0c10c8d25374f3e10"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2668}}}],"partialFingerprints":{"codehealthFindingId/v1":"c88d321e56aa306ae49de0b8ef89942f19e62ae6c4de7bbd195f3fce968a27ac"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2720}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3dbbc8fcae9df008bd76f862e7f9edf2db15941b55a4b7c639307197f7a1364"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":2858}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aec160bfde5d8e5ee2cf5e9c84263173821b91a7f6f1bb6d3337af7a00bb939"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e86621dd0bf1a7b12d6b5fb8c83a0f1c5711141ee96fda0d8185d5c4e928bb6"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"1454b64e9fc9cb3ec3b6bd3649c5062f10d74d1c57fda8c05a8d1bf1a154735d"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"74232886347f8334735f4b6dfe222c745125a139a255618cc04ea4fecee30a4f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"629a0f0ec92afb5c38876c27e3000a34e3527588ddcbb303a59c408d3d8bf139"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"842d3ca847c2afec7f8e955754453d3d284f3e5fc25b705d1b122b21ed6790f8"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"af16a0f2b17a1b2d9a2df48ca6c66da311e59fed0a6a026302a79dd11d5ebf00"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a70f883f9cdfc8dfb22b4f42bb53057ad07e2e931b32c7f7162db0511b7cda"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"65889cdce12ac71a0d7d4ceaee03c6d480b46733fe0890ca5fdf72fbe153b0c6"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"1deae9bee35334b806438cd97040366a8d105df80a875b8ded65d80b6e583134"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1776}}}],"partialFingerprints":{"codehealthFindingId/v1":"de6be3fb57fa24c3ae4900c120ef11f05487b20aee611d7f76fb12d37a39f6ee"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1808}}}],"partialFingerprints":{"codehealthFindingId/v1":"30cac8b95231e3b3b245ed1f8667270dfcbdd62bfa2b660fb2084e90dee30d92"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Mutations.cs"},"region":{"startLine":1816}}}],"partialFingerprints":{"codehealthFindingId/v1":"cad3aea84f54276689a213be92cf3af93f9f0367322b8ea48931150a7ed05ce7"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"15da8e261160237867de422f6eeb47aa5807678738550967eef2d0081260e881"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"843cfe3bd9e0d9fbb567d4b5bf2d0e2c3b976fb75eca68907db40bdea457dfa1"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.Set.Media.cs"},"region":{"startLine":853}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4271191553e85f0f77b9ae325c66ee614f0318fdaa493811008185f6fffbd76"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"50195bfa96064ad4474f164434065eada238bd690a9d17f5fe1392395bc8565d"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PptxBatchEmitter.Charts.cs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ad4ff02562833aef2df7980f272f6809d6e1f7581f2c0d170cba8232624ec0"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce90df9f938c66d1caf33f705ec5af34f2338b60193eb5989beadd09ccf258a"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d479ba70262eab093781edcf750102fe1f398af2c28c8680a9e7c9e0fe02419"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.Resources.cs"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"035109f20760efd963e75501f9edcc668f7027f8117aaff7d4226b41744e43a4"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordBatchEmitter.cs"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb3a751f1eae7a0ccd596cb03cc7117749b939f8e42dc22bfd2cb0ea32d3d0a8"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":3229}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b78b2509413f64fa114b2bf2f231b57a5b6f1cd8b06150efbfcb7995ed92e1c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Add.Misc.cs"},"region":{"startLine":3231}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d49ae4db6b65a4a474acd8200192c837f182122f4b701e1102fa0e92cc6873"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Shapes.cs"},"region":{"startLine":1354}}}],"partialFingerprints":{"codehealthFindingId/v1":"2656ec5b43c43280b3180dd716ffe578e658feccd453d1ba7ee8f2a16baece89"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.HtmlPreview.Text.cs"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"537e8c6ed5cf6a5a8faacdf6e6da28e1e6052ff7fe5b02d5f8121da05ee68173"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee88f2e5183363656d9412eb18a8061b19a4228860e5efa3958fa6121cc7326"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"a79127b29726dbb58e29d826a5031792c08f2b999c3d4c92e4e38b4d709e867b"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"77085d0f87fc7de10726b53adbed0713db2c817b901487234a1ac535223c3ffc"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f24f7b510d1251915c19c46544643cf1bab4b5d33ccff0e11d7eb48aa6ead80"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"d087374aa44ff79db8f8512c247caed12ca20fcfdad9be8130496002a0c1d9b0"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Mutations.cs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ecf9fbfbb70d5b6ff9e728b815a1f06e9f3f715bc98cc133baafa96bc01a9e6"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":2862}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e8ed319035182713dff241bcebf11b6442926abad0c3b11dcf7c3bbd5281ee4"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Navigation.cs"},"region":{"startLine":2961}}}],"partialFingerprints":{"codehealthFindingId/v1":"5429640552c26c0e61a4b63ba6ee3af0ed7b5f6ede9dea4a068d3bd1cabd3be3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"84995b14bf6faefc260bc377f05b3b6e51cdbe1cb65b438cff2a835102d92dff"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"68df50d5f0a4bfef0a667ecc1ba16b259b3b8aca9bd3a57015ab61b6b574213e"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"76898b7d52ec2ba2a2ebaa04aeb54a05e60aa9aa6380c85adaa0ef0056308570"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Word/WordHandler.Set.Element.cs"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ce31cb870aed84416a9e28c2ab46cb752cbdabcf8cf3f651282bdffff293bf"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpInstaller.cs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"2857fe68c17475a3ea18992e74dd5e729e98c9cd502919d1441a8da3ee1617de"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpInstaller.cs"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c6c7682add3162f3664f2521301d7faaa4bd5f0296dc302a92b9ba0dea8f96"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpServer.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c752d80ebf507101408a74768131224339b4f25d0cc82bdee69340c5d011782"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/McpServer.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"5126020ffe6b27aa279d26902e0c5a1ddf07ed01e89c6b0d44b73599e900524d"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"09bce0943cd5cecae48b5407e94f66e8dd4d0be2d7865c73ef6ef299725b8dfe"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d3ca328522a568af2e3895133d15d3cc16a7de200eb7d02bb54dea4353c4f7c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e46b760ed4fa2467963d6caba2b721082146cfd6dbb1d75d676f0d2a212500"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3bef620b770c4a665920b228af70721e219bc138e7dc3447298fa148adbd31e"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18ec25e18ec6fd432350e81c4c62a49284fb5f58c6d12af2f7bb21781dd93b1"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac6991ad5de1b75b297d6c5f0e3a2a40db63bd90d1b89ee0bad714ead532a85"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04d151de77211132aa0f47753a70292c0090e4af85f1fddc975e1441d910ccd"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f71e7c7e4683c750b9eb7c2e224e1ee263801b318f3470ddbc5ee2cda29b3dd"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"db51aea67a83cdf43800d60f471d82a8eb9d73cfc069a7e69e5803b0ac3091d7"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1640}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f0248b7dfbefe99e867a3d8bfb5f48ffe4c52369b17f52561e635187817ee9e"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1723}}}],"partialFingerprints":{"codehealthFindingId/v1":"b627a363a6fefeb33bbe5ef5deaad9b94ae5c41136af9f36582aab443937fa9a"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"6da8b01561533f838d68ef537a0af91a0ab433f9d80da2eaa8288e51db1fd222"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"2908c638636cba35bed2fa92c7007f5aadd4dce01fa9725c0a7f64963988a6e3"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2398}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f0389078a8fcd72f128df9e04f567f848f2984dc406585ea14bd5a13507b97f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2669}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc4edce87ff70f440369ed42875643f087d1e31e6d594fe6888fec1baa0063d"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2670}}}],"partialFingerprints":{"codehealthFindingId/v1":"3522242ba9e98248bcf0b8aecccb897fb7961147cb2527cdd0ced3295ce46023"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2671}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb6efa0d06d640a0e7ed464869cbda642f9703d50a3c36916f54eb66abe6d97"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2672}}}],"partialFingerprints":{"codehealthFindingId/v1":"81ab74e7cf5fde209bbd32e6046f3e38b5dc584444bb5808602d69218ac7ae1c"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2673}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8cccb04c44589c1d146c046bebd0dcf747a85d433560c80ec46bb51ffc63ca0"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/ResidentServer.cs"},"region":{"startLine":2797}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48c4d47964e89be98fe2b46ffcc8d8d4fea26b00526f592f388c33b07ec709f"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable OOXML0001 \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/RawXmlHelper.cs"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ac067053c4610ece831e139fe19b21d3c5cebdee18f05d1df75e926a5f10a54"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable OOXML0001 \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd8a79012cb068554fede6078f073d67952b6a8b71ab9eafb565cf639d70261"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable OOXML0001 \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.View.cs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a1fb3990a51b50b5e6ddbfec16d15be09ec3ab53767261be675936720c13d96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO CONSISTENCY(underline-variants): CSS has no dot-dash \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.HtmlPreview.Text.cs"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"db5131b1001bbc28e87db7717a1aa2fbc63399b1977b196483e41300da4a847b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Chart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/Pptx/PowerPointHandler.SvgPreview.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c473e62a81804ad64fac082037e86ae5907e42eb9bf31df6dc162bd0d42acdb"}},{"ruleId":"D18","level":"warning","message":{"text":"Solution references a project that does not exist: \u0060officecli.slnx\u0060 declares 1 project file(s) that are missing from the tree (\u0060tests/OfficeCli.Tests/OfficeCli.Tests.csproj\u0060). A solution-level restore or build fails on a dangling reference, so anyone building the solution rather than an individual project is blocked. Delete the stale entry from the solution, or restore the missing project file."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"officecli.slnx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a7e5928b63589183903a394fa6a2709106ee8ce881ac4f2493463591f905ab"}},{"ruleId":"D18","level":"note","message":{"text":"Single-project monolith: The whole codebase lives in one project \u2014 at this size, splitting along clear seams (domain / infrastructure / hosting) would make boundaries explicit and builds faster."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"065f1a0cebbcfa80c7d58bc2d15f0d476208f4ff888aa4725790203f65e3147f"}},{"ruleId":"D19","level":"note","message":{"text":"The \u0027For AI Agents\u0027 section is cut off mid-table (PPT creation process) by the scanner; it cannot be confirmed whether the agent-getting-in-one-line guide is fully present or needs a fix.: No action needed, as only truncated content is flagged."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37224b7f8c89cc1c1700463301b809ac2bbc99adcc27702fb7078a5ab6ba3fd3"}},{"ruleId":"D19","level":"note","message":{"text":"The editing rule (PR must update matching schema file) and Not here section are clipped mid-table; the visible layout and enforcement discipline are intact.: No action needed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"schemas/README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"684faacf72e63a933c29850d831e8163e2399b8e858fcfc5936e85f2a853a3d7"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found at common paths; consider documenting architectural decisions in Docs/ADL/ or similar."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D26","level":"note","message":{"text":"Split officecli: A generic \u0027Office\u0027 CLI at 252k LoC and 145 types across 9 namespaces is a sprawling grab-bag. Suggested: by namespace: Excel, Word, Presentation, etc."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c835674da4debcf264a4b401c9d5d9581b61ee96fa481e88c95ca83357f79019"}},{"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":"be82002869094debafd47ffc0021bdb17eacecac471c254f8f1b3bfbd31ecf12"},"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":"8d612c7ebc7afc6292060e4aefd997b9af495696007cefe3611b00f1e091679e"},"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":"b5e6416022c21f1606f098c5fd6778cc234de6e6d8a0c43678847b2ae35539fc"},"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":"7f3f959675116e360d466aa15b1e183975ee7269fa3ec25c8f34e446585428c1"},"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":"9c18ae6fb62e3da63f0457b6b6d47524d06a6ee87e78a36c8308355c9efc1ae0"},"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":"279f7c2a59aa5a1b2df21dde4e17b63a3002fafe2fb1f07d4d13071b8f447f08"},"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":"ade55b6de2658d919390820a4b5d8822d36bc50910622417fc2627e629fc510d"},"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":"42f547b6fbe5226539a74bcb3f7a8b8c10245dd8bd2c0e958089f4c6c3470c9d"},"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":"dbe07a32a34484983deec29f543448b6f5cbbc24ce0ae2a9fbcafa2ba1c0e788"},"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":"fc20d52abc72e492b84d6c1bf1f8fb145e4b27cd423ca117cc1671ec1806146a"},"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":"a43515e9578392beec3201e284c8d4feea70fdbbc363d9c1832acc05ed84f648"},"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":"a13430e920c121f6a70deaf2b27835bc531ebe54e6504cc497389a2edf0a621d"},"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":"d24139cd6306f3dd8e6b1e0f415d7c4e00610e057865a373c6aaf23e8584e63e"},"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":"2bf75f2c00caa37e25b8684f387791c8fc852e90947284c46e17c3dbea5db71c"},"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":"487cbcb09d7944f1ae4e4495f928a77316f44a6945d0e6a5c8bd94a305fff8c1"},"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":"c37c80869b09402b50199e04bcd4723973ae8e3495585ec975981e0623ba7ddb"},"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":"66bf2c6e23d8654cb6a80d6ea99bd928b81b48d66aa76a6c609c627568ef9fd3"},"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":"ece315f0efe1bcac82244696dd2f65b09bb5062b949aa709efb1afb3850216f4"},"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":"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":"057cba32a3e8f8d6be558e28dc473371dee402e44d8b8464cb4934387eaf18a0"},"taxa":[{"id":"CWE-1333","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":"2d03389ceaf53d9eb8d9ab96ece6d0da8d9598155b1618e7fa4a91b5c41460a4"},"taxa":[{"id":"CWE-1333","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":"31811a10040aa30ec69fb7b0f7e3e8b42bbd8da9680e156efe720a8c342eaf86"},"taxa":[{"id":"CWE-1333","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":"3aa62454c3ab8bc12bc0f83d6c58c0ee122fbf43cdd855e528cb01592b330809"},"taxa":[{"id":"CWE-1333","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":"ba149981968c1e26373ce36c388b70888f3bec0339f242d6d975fa196f90cb69"},"taxa":[{"id":"CWE-1333","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":"bae069af16420652bb29bb026f26ab4623def9f2bf78d7cf1f329db5da32d508"},"taxa":[{"id":"CWE-1333","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":"175cb092b29ca905e8b78f7fb7fe4b952142b24abb7127399345e4a5d02dcc9b"},"taxa":[{"id":"CWE-1333","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":"e5af588b8b073f57da87a3773cfd7a5c2517cf0c0de6e24254e487f7ca334902"},"taxa":[{"id":"CWE-1333","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: WatchServer.cs \u2194 watch-sse-core.js: \u0060src/officecli/Core/Watch/WatchServer.cs\u0060 and \u0060src/officecli/Resources/watch-sse-core.js\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well) and are written in DIFFERENT LANGUAGES, so no import can join them and they cannot be co-located into one unit \u2014 they compile and ship as separate artifacts. What binds them is a CONTRACT across that boundary \u2014 an event or message name, a route, a serialised shape \u2014 that each side currently spells out on its own, which is exactly why a change to one drags the other. Declare that contract once where both sides read it (a shared schema, a generated constants file, an interface-definition file) so a change on one side fails the other\u0027s build instead of drifting silently; where the surface is too small to be worth that, name the counterpart in a comment on both sides so the next reader finds it. There is nothing here to merge."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Core/Watch/WatchServer.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa2d0a151a7fdc4c1ace116ca2282381373e261ea52af1bcf2046e390da2a79f"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: ExcelHandler.cs \u2194 WordHandler.cs: \u0060src/officecli/Handlers/ExcelHandler.cs\u0060 and \u0060src/officecli/Handlers/WordHandler.cs\u0060 change together 51% of the time (18 of the 35 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well). They sit in the same directory, and in this ecosystem sibling files there normally share one namespace/package \u2014 so a direct reference between them needs no import and this pass cannot see whether one exists. Read the pair before acting: if one file only DECLARES what the other consumes (a constants/types file beside its user), the co-change is definitional and the question is whether the split earns its keep; if they duplicate structure, extract the common part into a shared function or type they both call; if neither holds, the coupling is hidden and worth breaking."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/officecli/Handlers/ExcelHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f24da290a7ce55d1af382decce6d023b46c7c638eee67e18eb814cef2235ee4e"}},{"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":"d657599f6f99da1927d3377533dfc0888b34c4d84aa7d5579841fd72d0e39bce"}}],"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-1059","guid":"a2381a08-60f6-9554-a8b8-f3018cfaaca5","name":"Insufficient Technical Documentation","shortDescription":{"text":"Insufficient Technical Documentation"},"helpUri":"https://cwe.mitre.org/data/definitions/1059.html"},{"id":"CWE-1333","guid":"11a336ce-63de-c45c-845e-29ca1e8df13d","name":"CWE-1333","shortDescription":{"text":"CWE-1333"},"helpUri":"https://cwe.mitre.org/data/definitions/1333.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-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-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":29,"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."]}]}