{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"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":"D23","name":"Boundary Type-Coupling","shortDescription":{"text":"Boundary Type-Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D23"},{"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":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"CT_Settings.Write (cyclomatic 102): CT_Settings.Write has cyclomatic complexity 102 (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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7182f95855d380ee021b4916d929aabd09f01e62159e1df6cb37042a5990ce0"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Settings.Parse (cyclomatic 100): CT_Settings.Parse has cyclomatic complexity 100 (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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"77fd7ef4ecef34068011632426ca2f59a70dedba49d961d2e3530486285116e6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ParaRPrOriginal.Write (cyclomatic 83): CT_ParaRPrOriginal.Write has cyclomatic 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":5643}}}],"partialFingerprints":{"codehealthFindingId/v1":"d482e82fa06be937ffafb5afb3525d305e44633514ae253ca5e664b52d2b2837"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RPrOriginal.Write (cyclomatic 79): CT_RPrOriginal.Write has cyclomatic complexity 79 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":7424}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fc8a42af1e8875897601ceb139e0f46cefd7fe8084247c2ceb4010883a0c0bd"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PivotTableDefinition.Parse (cyclomatic 77): CT_PivotTableDefinition.Parse has cyclomatic complexity 77 (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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e928f005237fe571c01ddd22760296fb64260579861dff65553b6aafa3f877d"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Compat.Parse (cyclomatic 68): CT_Compat.Parse 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":4891}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ac0f1c39a30e2d65231d5d456fdc7743b2b3e2901337d750ee29df78bc8530e"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Compat.Write (cyclomatic 66): CT_Compat.Write has cyclomatic complexity 66 (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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":5034}}}],"partialFingerprints":{"codehealthFindingId/v1":"084aed86f13ecf75ea0a1ce117105b53b1bcba17db6a261bdb059b18ad29be73"}},{"ruleId":"D1","level":"warning","message":{"text":"EscherDump.DumpOld (cyclomatic 65): EscherDump.DumpOld 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":"main/DDF/EscherDump.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"79bf4ebcf1473f42d5351eda5b872eca49f9942f1bcae80e1776f7cbf446994b"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.ParseStructuredReference (cyclomatic 61): FormulaParser.ParseStructuredReference has cyclomatic complexity 61 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"387da55ac95b8403f73fc2cd73a1389473178bb34ba0ab24558e5df5ab822a61"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_R.Write (cyclomatic 61): CT_R.Write has cyclomatic complexity 61 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"15decbe2c9a3f0bd5a6f25822bc6d0c27c7083b637915e8291272e7eebb412e4"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedStringsTable.ReadFromStreamViaXmlReader (cyclomatic 57): SharedStringsTable.ReadFromStreamViaXmlReader 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":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f706ceb535f43dbda5c876b0f68f35c50236c677aab9518d555de06b0c6abf"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_P.Write (cyclomatic 56): CT_P.Write has cyclomatic complexity 56 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"3faf370dae2b5bb097e21235c131b10d2a4f61de355ffc1ec47e37a2e4210fca"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Body.Write (cyclomatic 53): CT_Body.Write has cyclomatic complexity 53 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Document.cs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6f50aae34ef3e5b9b51a68f91f526f5f08b6f3d5c84ecbb155bd64731f785c4"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_FtnEdn.Write (cyclomatic 52): CT_FtnEdn.Write has cyclomatic complexity 52 (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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d2015496595aa23b7752e0f83af12e40a75fd5f5a29e9c1720994e73c5f8fb"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RunTrackChange.Parse (cyclomatic 52): CT_RunTrackChange.Parse has cyclomatic complexity 52 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":2079}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4ec8f6ea95d4ebb5251da478dda74d6b4fdf520cb80e0549bd324f63ee7d673"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PivotField.Parse (cyclomatic 51): CT_PivotField.Parse has cyclomatic complexity 51 (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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":2139}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bc45b9084f53acab3f06f3396b82358498cd14578d793c8694cfb1083eb8c2f"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RunTrackChange.Write (cyclomatic 51): CT_RunTrackChange.Write has cyclomatic complexity 51 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":2335}}}],"partialFingerprints":{"codehealthFindingId/v1":"10252e519df9e66a7569d4123d6e36c5e6ff83c4a5fddfdfefb002f7c23c1d9a"}},{"ruleId":"D1","level":"warning","message":{"text":"OperatorEnumHelper.IsValid (cyclomatic 50): OperatorEnumHelper.IsValid 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":"main/SS/Formula/EvaluationConditionalFormatRule.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2ff25ae96c6c6dda2ef0e6764451890b1bfceec5376f1456ca334dab8da42b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Tbl.Parse (cyclomatic 49): CT_Tbl.Parse has cyclomatic complexity 49 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"17362b0388e6987ac62a08df5e2fb2f43e32b065edd3ea56282a37c8ce2537a0"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Tbl.Write (cyclomatic 49): CT_Tbl.Write has cyclomatic complexity 49 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"e798b783da0fee1ad050ba1f34c1056d84e3a65361285506f6481449b95999da"}},{"ruleId":"D1","level":"warning","message":{"text":"EvaluationConditionalFormatRule.CheckFilter (cyclomatic 48): EvaluationConditionalFormatRule.CheckFilter has cyclomatic complexity 48 (threshold 15). Of this number, 30 points are the body\u0027s own statements and 18 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":"main/SS/Formula/EvaluationConditionalFormatRule.cs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"d01935b3b3f0dcdf7c5fb8f86d1e890ddc6828f2846444206ae7d76a4a64b8b6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ParaRPr.Parse (cyclomatic 47): CT_ParaRPr.Parse 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1924}}}],"partialFingerprints":{"codehealthFindingId/v1":"4531fdccb9b8d5001c35084fd1f3573b2522d3400b0ec722806cb4d1c3e932b6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RubyContent.Write (cyclomatic 47): CT_RubyContent.Write 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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"9047b7cb4146514c8ade1792819604b34ac65c530d318a7e20ddba68eaacb6ac"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ParaRPrOriginal.Parse (cyclomatic 46): CT_ParaRPrOriginal.Parse has cyclomatic complexity 46 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":5505}}}],"partialFingerprints":{"codehealthFindingId/v1":"abdc4e282195c166389540087c0c6740d8b83dbe8f2e64016d220a17beff42a9"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ParaRPr.Write (cyclomatic 45): CT_ParaRPr.Write has cyclomatic complexity 45 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2025}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a46ef042b58bec13e3ef60a2d02d74378cc0ce7904fd42aaf4573365fd318e9"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RPr.Parse (cyclomatic 43): CT_RPr.Parse has cyclomatic complexity 43 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":4065}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc7ae831a4018edbb3abfe4885c2201abd3b156412912e3752bec756563c803"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Worksheet.Parse (cyclomatic 42): CT_Worksheet.Parse has cyclomatic complexity 42 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Worksheet.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"680f71e52f134b8261d20391ae3c6d2b31ee45419c1db0ad5ce893ec2c401ba2"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Worksheet.Write (cyclomatic 42): CT_Worksheet.Write has cyclomatic complexity 42 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Worksheet.cs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bca91b3a90a3cb07ba924ff043d610213d8155d94f73059114757b19d27732"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RPrOriginal.Parse (cyclomatic 42): CT_RPrOriginal.Parse has cyclomatic complexity 42 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":7294}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49bca81102edfc804eff27c8ce4829b5025763c222ca2ac2f9808e45fd43c49"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartRecordAggregate.WriteStartBlock (cyclomatic 41): ChartRecordAggregate.WriteStartBlock 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":"main/HSSF/Record/Aggregates/Chart/ChartRecordAggregate.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"a22ef85c5c00f1921b536a012ebc2bbb82db37adc67a294615f092991764e33d"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkbookEvaluator.EvaluateFormula (cyclomatic 41): WorkbookEvaluator.EvaluateFormula 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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"09996dd81d0503a4b4703b3690c7c3b76fbb4974ca2c2b4a98535e8b9cef82d6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RPr.Write (cyclomatic 41): CT_RPr.Write has cyclomatic complexity 41 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":4158}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff3e9e8a05e81ea8cb7cda4bc1cc9cb079c6a015041fcfb9cc95addae2faf4c"}},{"ruleId":"D1","level":"warning","message":{"text":"InternalSheet.InternalSheet.ctor (cyclomatic 40): InternalSheet.InternalSheet.ctor 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":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"38f760db577f511e3e732344b3ed8d7bfbbedb65f94c33943cb94b599c846b8b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PPr.Parse (cyclomatic 40): CT_PPr.Parse has cyclomatic complexity 40 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":981}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd92ee54410e3c5f0f17d0c7596d577b4b67f8c950429d4bb02b7b5eb87db45"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PPr.Write (cyclomatic 39): CT_PPr.Write has cyclomatic complexity 39 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c21c11b50a51b03d3e8e57b6ed902b0ef343f232edb8d2d503a3fd47e69b567"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_R.Parse (cyclomatic 39): CT_R.Parse has cyclomatic complexity 39 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a583c6d0913975ca5ae0c8df2ff3e0652c3c6c74b22422b6147fc11de21fe27"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_P.Parse (cyclomatic 38): CT_P.Parse 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"11254864ed8f72c5470281919b4f7a338f9f69ec42267074e5eef259c1b8aa09"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFOptimiser.OptimiseCellStyles (cyclomatic 37): HSSFOptimiser.OptimiseCellStyles 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":"main/HSSF/UserModel/HSSFOptimiser.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"247e918fbdb3c3b6f76ff850877eaac2a04a2365554302288b66549f31bed1e2"}},{"ruleId":"D1","level":"warning","message":{"text":"Value.ConvertTextToNumber (cyclomatic 37): Value.ConvertTextToNumber 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":"main/SS/Formula/Functions/Value.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"34cc0d93337f35219b237a972c021a4337d4c2d86c27247d16a544906f2697b7"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PPrBase.Parse (cyclomatic 37): CT_PPrBase.Parse has cyclomatic complexity 37 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":6236}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd46588960437ae3d6d43cfc6dcf35b0f202155e7be78f881b1fd8e821b17770"}},{"ruleId":"D1","level":"warning","message":{"text":"VariantSupport.Write (cyclomatic 36): VariantSupport.Write 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":"main/HPSF/VariantSupport.cs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee910833ed4ba742229d688695cdb12bb0c8899bac2fee1cf2acca130f74cac"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SmartTagRun.Parse (cyclomatic 36): CT_SmartTagRun.Parse has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa825a263923c745db639c7c300567176f8c4123b8caae62e70b37886c7fb136"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SmartTagRun.Write (cyclomatic 36): CT_SmartTagRun.Write has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1482}}}],"partialFingerprints":{"codehealthFindingId/v1":"779f4f72a41df0e6233deb29d073e8c5bdc316638936f558764d1a28892e96fb"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PPrBase.Write (cyclomatic 36): CT_PPrBase.Write has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":6321}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e9c0893b1fdee1b5ecea4a06e72c337a360a7edfb16f458782d59684fffc433"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtPr.Write (cyclomatic 36): CT_SdtPr.Write has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1948}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a91ea157faeb718ba5e1e49c0c40f4f85f2e76a7bb0535a4c0d3676344a988"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Row.Parse (cyclomatic 36): CT_Row.Parse has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":5555}}}],"partialFingerprints":{"codehealthFindingId/v1":"905d494e1b562b744d3c0675c05f498a0081edb9cb3ae7db7e84fd13b8e4f32c"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlRun.Parse (cyclomatic 35): CT_CustomXmlRun.Parse has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2cf9e9c052e11b941b4556bade50682b5c9c87e5542b4b45a795d0420aebe5"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentRun.Parse (cyclomatic 35): CT_SdtContentRun.Parse has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":2246}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc249607cb71e50b0f11eb194f3bb125b3160b0a0ded83609fcabbbcea4d276c"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Tc.Parse (cyclomatic 35): CT_Tc.Parse has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3384}}}],"partialFingerprints":{"codehealthFindingId/v1":"19ecbc10b57b2fc6723e1becc203695cdac569033b04d3443519ffa6a7bb0923"}},{"ruleId":"D1","level":"warning","message":{"text":"DataFormatter.CreateDateFormat (cyclomatic 34): DataFormatter.CreateDateFormat 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"9063b727127009684394948fe1ad506b2b1adb2a7f6a4b167cfcd77ad4f35741"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Shapetype.Write (cyclomatic 34): CT_Shapetype.Write has cyclomatic 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":3842}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbccd0e5969b8b63c214716a96f5c64a777f595ed2d348f3bc377bc6fc2fe742"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlRun.Write (cyclomatic 34): CT_CustomXmlRun.Write has cyclomatic complexity 34 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d90872190d29312ccdb7c740f8025051e93bce4b724997a3da4bfd460e92722"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Body.Parse (cyclomatic 34): CT_Body.Parse has cyclomatic complexity 34 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Document.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce50e707804f9c19a0bce578389d6e6c4d586f857776251e2043c9e8dc130872"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_FtnEdn.Parse (cyclomatic 34): CT_FtnEdn.Parse has cyclomatic complexity 34 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfaa769d85116591c07437d4731efa1ac1cf154a850bf90fdb7fe5eb71efe792"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentRun.Write (cyclomatic 34): CT_SdtContentRun.Write has cyclomatic complexity 34 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":2417}}}],"partialFingerprints":{"codehealthFindingId/v1":"3088367c6dc5d78a6a8c3c0a184b6cb10901ba507bc74edb38293ff879790156"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_HdrFtr.Parse (cyclomatic 33): CT_HdrFtr.Parse 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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e09c2f4cbf64025ea37dd72bedce891743f8bc42fe805738555d5d344abf91b0"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Comment.Parse (cyclomatic 33): CT_Comment.Parse 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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"497bfe65a164b874c06d5ae87d739974935203e719548cce515e7055542bf419"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Tc.Write (cyclomatic 33): CT_Tc.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3554}}}],"partialFingerprints":{"codehealthFindingId/v1":"502d8483176600bf7fc643d7c6da8ed82ec4706d2375c95e9dd377282326f7a0"}},{"ruleId":"D1","level":"warning","message":{"text":"PackagePartName.CheckPCharCompliance (cyclomatic 32): PackagePartName.CheckPCharCompliance 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":"openxml4Net/OPC/PackagePartName.cs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a81dfe900ba33ba697b15fe09712384c8ed73bad5e137e8f299e03bcdff098"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlRow.Parse (cyclomatic 32): CT_CustomXmlRow.Parse 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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"682578c229a862553a4d1975c2a3145d60f33cba8d2741a775bad3a1588403a1"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlBlock.Parse (cyclomatic 32): CT_CustomXmlBlock.Parse 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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1709}}}],"partialFingerprints":{"codehealthFindingId/v1":"813699a71a572d98886586c42b669bd1c5d46cb27bd6b47c99b0a38e276ae9a9"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlCell.Parse (cyclomatic 32): CT_CustomXmlCell.Parse 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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":2141}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f352990816f8ffe213fd362aac10b3e05a2cb7558cdef1eb268bd00d7cd5e15"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_HdrFtr.Write (cyclomatic 32): CT_HdrFtr.Write 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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e3e0a82d1e7668a7bbbcc5d324c3556f706e6f9a44c393e697fc2c1c8586f15"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Comment.Write (cyclomatic 32): CT_Comment.Write 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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce52d2456d8f81f2f89a391ac45af0fdf24fdc1a9894d787f1d456a68e90d91"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentBlock.Parse (cyclomatic 32): CT_SdtContentBlock.Parse 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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9282ed9f61fac19d0aa0187b1ca4314cd4de81a480edc09f8eab6a6d8574e23"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Row.Write (cyclomatic 32): CT_Row.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":5723}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48547fe7369469b64230f2773b34415d60579f6d3791fd6829fc695935c8811"}},{"ruleId":"D1","level":"warning","message":{"text":"MissingRecordAwareHSSFListener.ProcessRecord (cyclomatic 31): MissingRecordAwareHSSFListener.ProcessRecord 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":"main/HSSF/EventUserModel/MissingRecordAwareHSSFListener.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cdffb189c8d02ca162a51bf1100e73113e98442e74858a5d7cae54d64eb036b"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.ParseRangeable (cyclomatic 31): FormulaParser.ParseRangeable 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ed7934338ea16492a69f9ee6ee87bedb8a0d1f7d2ddf6f5826f3f0b60b2c3c"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaShifter.RowMoveAreaPtg (cyclomatic 31): FormulaShifter.RowMoveAreaPtg 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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84007dc3715baece5566e3ff150202d3fc31a660a8cef924953d8a372df3f4a"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaShifter.ColumnMoveAreaPtg (cyclomatic 31): FormulaShifter.ColumnMoveAreaPtg 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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"639fa590a7d40c51f2cdf9e3d83688c529b10108df1b0596187babc2513b6f85"}},{"ruleId":"D1","level":"warning","message":{"text":"Properties.LoadConvert (cyclomatic 31): Properties.LoadConvert has cyclomatic complexity 31 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Collections/Properties.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a9fd647484ddbcd0646e9c81075cbf2e833a658d307267228693855781e306"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PivotCacheDefinition.Parse (cyclomatic 31): CT_PivotCacheDefinition.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c543a767c576c3a3366e82917db9373d126f6987f71830b26dfb95bd390bba"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlRow.Write (cyclomatic 31): CT_CustomXmlRow.Write 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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"970fae2f1db9d263619c955e8b212e300e94d5b1bed5937f2264ab0bc8cb9797"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlBlock.Write (cyclomatic 31): CT_CustomXmlBlock.Write 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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1868}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80dbefa3f2a6c3d1d7040e36eb4c11a200d18e1ab8b30e5020a67281c972f0b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CustomXmlCell.Write (cyclomatic 31): CT_CustomXmlCell.Write 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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":2299}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe266159424771035854dc52b623a4895d2ae6389851d80957b24f445912967"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentCell.Parse (cyclomatic 31): CT_SdtContentCell.Parse 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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dce7ab339ab44ed6dcc3b52819ef9b1c67dca73e18f80656fadee3c5279b5af"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentBlock.Write (cyclomatic 31): CT_SdtContentBlock.Write 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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1149}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86d316c45fdef79e9d729df1c974ede09df0da8cb71c07328b83bda931cb8a1"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentRow.Parse (cyclomatic 31): CT_SdtContentRow.Parse 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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1494}}}],"partialFingerprints":{"codehealthFindingId/v1":"f81c8eedf070970217b0b5764daced59ed5021f516f9a6272865ac9d9463b110"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSheetXMLHandler.StartElement (cyclomatic 30): XSSFSheetXMLHandler.StartElement 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":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ebfdcf8f2be4496c6b8dff768d283e6eaac0301922e5fa9ce2529f509eff0a"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentCell.Write (cyclomatic 30): CT_SdtContentCell.Write has cyclomatic complexity 30 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5565e334330ef6fbc56d13676b9e5465de9a9c0e46dbed6d7f2f5975dd163f0"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtContentRow.Write (cyclomatic 30): CT_SdtContentRow.Write has cyclomatic complexity 30 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1645}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f13ed9118ade0123cca0568c649194ccccd7b6249cd9788bfca530e325efd5"}},{"ruleId":"D1","level":"warning","message":{"text":"DVRecord.Equals (cyclomatic 29): DVRecord.Equals 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":"main/HSSF/Record/DVRecord.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddda27cb369153776e47b02071dc736c9f5d8d4cec6992b654c9554f49dd5562"}},{"ruleId":"D1","level":"warning","message":{"text":"EvaluationConditionalFormatRule.CheckValue (cyclomatic 29): EvaluationConditionalFormatRule.CheckValue 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":"main/SS/Formula/EvaluationConditionalFormatRule.cs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"8401e006e72a00a2aa94d9d2222094c4466c27d1c6d99038f52449515402f83c"}},{"ruleId":"D1","level":"warning","message":{"text":"PackagingUriHelper.RelativizeUri (cyclomatic 29): PackagingUriHelper.RelativizeUri 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":"openxml4Net/OPC/PackagingUriHelper.cs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"c206dc5d19f5cc1008b50dc719605ed05bc9e41b37cd102f12210f9cdad62434"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RubyContent.Parse (cyclomatic 29): CT_RubyContent.Parse has cyclomatic complexity 29 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecce9b273419bf42737f3c0454ef386d3e88f1df8811e82745dfeb2d9cd3e294"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TrPr.Write (cyclomatic 29): CT_TrPr.Write has cyclomatic complexity 29 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4035}}}],"partialFingerprints":{"codehealthFindingId/v1":"409f11aefb0946b5b420b4996289566af0e75c99f64f5efb567cfeaaee0e1173"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartRecordAggregate.WriteEndBlock (cyclomatic 28): ChartRecordAggregate.WriteEndBlock has cyclomatic complexity 28 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/Chart/ChartRecordAggregate.cs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"42946d4f283cdb263935e6f61e5c4430abecc82a621cfb40e534137c8d38dd81"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSheetXMLHandler.EndElement (cyclomatic 28): XSSFSheetXMLHandler.EndElement 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":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1f7d4ae449fb3b406efb0669dbe640ce1baa8cc13a462a6d7f7ed7b1e1aad99"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedStringsTable.ParseRPrChild (cyclomatic 28): SharedStringsTable.ParseRPrChild 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":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb0420f3e3c9ef4d3186bbf58324ea197e7fdcf830df5bcf963d9ce2da43eab"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Style.Parse (cyclomatic 28): CT_Style.Parse 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":"OpenXmlFormats/Wordprocessing/Styles.cs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"12cfa4842cb9ff16b34fe1a9cee9237844f354a68d7786715e775897de01a5b5"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFChart.CreateSeries (cyclomatic 27): HSSFChart.CreateSeries 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"051d18bcc07f470f8ea802616de7cb46b4e0648a7f13a38cf38cfd8501df8b5d"}},{"ruleId":"D1","level":"warning","message":{"text":"CellFormatPart.formatType (cyclomatic 27): CellFormatPart.formatType 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":"main/SS/Format/CellFormatPart.cs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"84280db5904cda1e1b1acbab85191823ec07786d8397ece2c7d7cdec43655884"}},{"ruleId":"D1","level":"warning","message":{"text":"CellNumberFormatter.FormatValue (cyclomatic 27): CellNumberFormatter.FormatValue 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7aa25abfa0e16b38cdd58768a81a0086baf7de28d7fd5885c7d3a80bd5ee687"}},{"ruleId":"D1","level":"warning","message":{"text":"DStarRunner.Evaluate (cyclomatic 27): DStarRunner.Evaluate 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":"main/SS/Formula/Functions/DStarRunner.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"4597133e43077899caa07697f68caf6459536b402128007b46cc2a9676e062f1"}},{"ruleId":"D1","level":"warning","message":{"text":"DateUtil.GetExcelDate (cyclomatic 27): DateUtil.GetExcelDate 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":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c14c4ca18609f5634ee72c02f2b09a581e983db98fb7984b2a6caa5f43e102b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelToHtmlConverter.ProcessCell (cyclomatic 27): ExcelToHtmlConverter.ProcessCell 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"b73dedbf12b8fcc2807a9c7ee79b4a13341807c810efd61a29bf689f6148eda3"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFSheet.SetRepeatingRowsAndColumns (cyclomatic 26): HSSFSheet.SetRepeatingRowsAndColumns 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":2826}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd0110bb4badf4f976febf255831d176b46f0d728fad38efe8ea973bb5ab5a99"}},{"ruleId":"D1","level":"warning","message":{"text":"CellNumberFormatter.CellNumberFormatter.ctor (cyclomatic 26): CellNumberFormatter.CellNumberFormatter.ctor 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c38f3131d213d873f30a569c0486977ec67c50c389c524227d77eb2a3660ca"}},{"ruleId":"D1","level":"warning","message":{"text":"SheetUtil.ToDataTable (cyclomatic 26): SheetUtil.ToDataTable 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"67aeea4bb43bdea61a509817860c1fecc61e3823010ed1aba9c57f1e5a868135"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Font.Write (cyclomatic 26): CT_Font.Write has cyclomatic complexity 26 (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":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a7951520801049ba17c1daa1d9cf869d7f5622560a31377e303e25182008aa6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Font.Clone (cyclomatic 26): CT_Font.Clone has cyclomatic complexity 26 (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":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c9725e076e80bdc0d63e99761f12cf5c576702e4171d89ae25e32c5b55daa1"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Style.Write (cyclomatic 26): CT_Style.Write 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":"OpenXmlFormats/Wordprocessing/Styles.cs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"391d8c1c1b30362e0d063df25a481d234c8ce24f3c73c9b151a66fb45d3c0ab6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TrPrBase.Write (cyclomatic 26): CT_TrPrBase.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3068}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec13ef8cb1fa37a6580b26810d3c5a44827f6e63ac9ec87b5d1c27d1f147181f"}},{"ruleId":"D1","level":"warning","message":{"text":"InternalWorkbook.CreateWorkbook (cyclomatic 25): InternalWorkbook.CreateWorkbook has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"872973b7670675eaefda92f3fde4d4e762700c223d8dd631e79289547a2b935b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Shapetype.Parse (cyclomatic 25): CT_Shapetype.Parse 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":3762}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3eb3a696edc4d8b3d021df9b01868a7f3d8ad09859d03d4bdc2216d59d4e858"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SectPr.Parse (cyclomatic 25): CT_SectPr.Parse 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3125}}}],"partialFingerprints":{"codehealthFindingId/v1":"72bdcab9e2fbfb233e3e49cc6ac7a7a1cb9939ac9354d3aa4c213dcbceee6e78"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SectPr.Write (cyclomatic 25): CT_SectPr.Write 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3188}}}],"partialFingerprints":{"codehealthFindingId/v1":"17826f9837133958600c21810e12695ba0c4bc50eba43f471327af651caf515b"}},{"ruleId":"D1","level":"warning","message":{"text":"CellNumberFormatter.Writeint (cyclomatic 24): CellNumberFormatter.Writeint 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"7adb67bb6bcd7324aa3ec022287937ee7300a0455b98c5dfcd8bc98371d4ce30"}},{"ruleId":"D1","level":"warning","message":{"text":"ZipPackage.GetPartsImpl (cyclomatic 24): ZipPackage.GetPartsImpl 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":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b17da11f953efa183c3921c227303f6962e1d477dc1d0541981120392f61b42"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Shape.Parse (cyclomatic 24): CT_Shape.Parse 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"a383ae1c3b1d294a87738eb7f9259aad9e694a971e29d2104525ad9c45bcc6ce"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SdtPr.Parse (cyclomatic 24): CT_SdtPr.Parse 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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1832}}}],"partialFingerprints":{"codehealthFindingId/v1":"a132ecfef021eabe08d2a14b30ac7492ecd08dd1ddc650bf1962e29691ae7c49"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFOptimiser.OptimiseFonts (cyclomatic 23): HSSFOptimiser.OptimiseFonts 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":"main/HSSF/UserModel/HSSFOptimiser.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"092a81502c265cc52416992277996423ce807d527e5188b3c00dca6238d22e7d"}},{"ruleId":"D1","level":"warning","message":{"text":"DatePartHandler.HandlePart (cyclomatic 23): DatePartHandler.HandlePart 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":"main/SS/Format/CellDateFormatter.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d7068764ab960357b5c02ebc424be6607af130ff2ff042808510f3c4488d67"}},{"ruleId":"D1","level":"warning","message":{"text":"Index.GetValueFromArea (cyclomatic 23): Index.GetValueFromArea 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":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8ce125f0248b0618ca360e3256337054aafd1ea2bce7ff2da48a6391b41e3d"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkbookEvaluator.GetEvalForPtg (cyclomatic 23): WorkbookEvaluator.GetEvalForPtg 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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f34090d120b980c16fcfd50f28cf979ca0f2b51309a51907fd2f7558b4e03a"}},{"ruleId":"D1","level":"warning","message":{"text":"DataFormatter.cleanFormatForNumber (cyclomatic 23): DataFormatter.cleanFormatForNumber 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7636a763b25ade8e3130b7865a3e2f3df206d685a72ddaa5696e9fd503054c"}},{"ruleId":"D1","level":"warning","message":{"text":"Properties.Load (cyclomatic 23): Properties.Load 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":"main/Util/Collections/Properties.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"3599b747f489d871b69a5924d2b5ebe7d97f15835e980d4daa9f94ca25e1b0d6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SharedItems.Parse (cyclomatic 23): CT_SharedItems.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":1768}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6c37c31cda824310c902943c00bcc479fe529882c0b884b095e30d2e338522"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Table.Parse (cyclomatic 23): CT_Table.Parse 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":"OpenXmlFormats/Spreadsheet/Sheet/CT_Table.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"e34d9a1b3783470406bdfca00d7f3b6e26fd7bf64445c02cadeaf404d301e65a"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFCell.SetCellType (cyclomatic 22): HSSFCell.SetCellType 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":"main/HSSF/UserModel/HSSFCell.cs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"7359816ffb3fed6ebf60b7a92dcf4312f802e4fdcd8355dea87a30198a369ac6"}},{"ruleId":"D1","level":"warning","message":{"text":"CellFormat.GetApplicableFormatPart (cyclomatic 22): CellFormat.GetApplicableFormatPart 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":"main/SS/Format/CellFormat.cs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c35a3a6aa8aec2e24b72ae7d9bd9a6e2f36a5974e2be353357a0530ab342bcc"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkbookEvaluator.EvaluateAny (cyclomatic 22): WorkbookEvaluator.EvaluateAny 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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d60f165b0a19d116a90dab127e8249a12991e04902aece99cd73e721a2544c"}},{"ruleId":"D1","level":"warning","message":{"text":"TableStyleTypeExtension.GetRange (cyclomatic 22): TableStyleTypeExtension.GetRange 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":"main/SS/UserModel/TableStyleType.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"44dca4ab94c935dc44c0e1bce6af5488526c76c942e2b79af57b132a98c8ffc6"}},{"ruleId":"D1","level":"warning","message":{"text":"ExcelToHtmlConverter.ProcessRow (cyclomatic 22): ExcelToHtmlConverter.ProcessRow 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"21d5377ea82948fe72b07ab6ab2ee3428e9f5c1dd681a8fca355b8d978577060"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFRichTextString.ToCTFont (cyclomatic 22): XSSFRichTextString.ToCTFont 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":"ooxml/XSSF/UserModel/XSSFRichTextString.cs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c6eb63dc2226a7b1ec2cc6be0eadddac0ac19686222455c23242cbce17b7633"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSimpleShape.GetBulletPrefix (cyclomatic 22): XSSFSimpleShape.GetBulletPrefix 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":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e91b3b93cdb66e6ac2f29ab59e66d752cb8e2ae58bd211cb691edabd3260687"}},{"ruleId":"D1","level":"warning","message":{"text":"XWPFDocument.OnDocumentRead (cyclomatic 22): XWPFDocument.OnDocumentRead 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":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b558b5a71262fcb5dbed932db5a2c3ef4d3af3fa332eb2309a7af18d196389"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Workbook.Parse (cyclomatic 22): CT_Workbook.Parse has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Workbook/CT_Workbook.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd5eb3fcc88aa9dc88ecd8d2f94a17715c626c65eed2cfb3e92f12dce104da7e"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SectPrBase.Parse (cyclomatic 22): CT_SectPrBase.Parse has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2240}}}],"partialFingerprints":{"codehealthFindingId/v1":"20cc2372df15a5c65e18562aa5c343ae52e8b7c93b5f1ab926fe10b8ad5f8005"}},{"ruleId":"D1","level":"warning","message":{"text":"InternalChart.InternalChart.ctor (cyclomatic 21): InternalChart.InternalChart.ctor 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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee2cda15cd46e32e2a39ba40c43dfebb20ed349e25afce6087f5245c6daefd5"}},{"ruleId":"D1","level":"warning","message":{"text":"DateUtil.IsADateFormat (cyclomatic 21): DateUtil.IsADateFormat 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":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"242c2e854cba7fbcb9034f3064b6e69f3bdfb09bd15472917ba45c7c4447f7d7"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFRichTextString.SetRunAttributes (cyclomatic 21): XSSFRichTextString.SetRunAttributes 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":"ooxml/XSSF/UserModel/XSSFRichTextString.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb7759ad4c522a1c0cfe6bffea869fcbaceba6f571291faaaa9e63060cc9e16"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Workbook.Write (cyclomatic 21): CT_Workbook.Write 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":"OpenXmlFormats/Spreadsheet/Workbook/CT_Workbook.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"0032256f0be54c87a80e2429836ad3e0793756bc4b930094ff92a6d4b3ad01ec"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Shape.Write (cyclomatic 21): CT_Shape.Write 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"121ea06500c1804720f5de6e9d908fbc7986e79cb451252d8c831a7ea2786d3d"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TblPr.Parse (cyclomatic 21): CT_TblPr.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2782}}}],"partialFingerprints":{"codehealthFindingId/v1":"97cc533bcf57c54e0d5596e2cae7e5f6161dd070023bec92ef3b9340e97e6887"}},{"ruleId":"D1","level":"warning","message":{"text":"TextListener.ProcessRecord (cyclomatic 20): TextListener.ProcessRecord 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":"main/HSSF/Extractor/EventBasedExcelExtractor.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a5f2c69ef9a45f78e8df4a27e08c13cc9fc84716062d69a7f349f30adf57e21"}},{"ruleId":"D1","level":"warning","message":{"text":"InternalWorkbook.FindDrawingGroup (cyclomatic 20): InternalWorkbook.FindDrawingGroup 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":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":2696}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcac138dcce54042e1d435fee4377b6a02b5ec182c01e8f1444a68a9f725ba9"}},{"ruleId":"D1","level":"warning","message":{"text":"CellUtil.CopyCell (cyclomatic 20): CellUtil.CopyCell 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":"main/SS/Util/CellUtil.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d24ca8a17bb25e72bff3d729a1983cdf04037ddf4017e9bb998e2970a029a5a"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSheet.SetRepeatingRowsAndColumns (cyclomatic 20): XSSFSheet.SetRepeatingRowsAndColumns 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6145}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfb54118d23e9852cc77ae7d85d5f1e94646abd9ccf3715e7f04889bca223e80"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CacheHierarchy.Parse (cyclomatic 20): CT_CacheHierarchy.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":6363}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f11b56893aa9824985ec84d24a3a4f19901a543c77ad4c778c62d4bbb49ae3c"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SectPrBase.Write (cyclomatic 20): CT_SectPrBase.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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2295}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ce31a95d2a0293ff65ba5f59d6ccbd29c9a8d68735785684d00d3c427850e3"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TblPrBase.Parse (cyclomatic 20): CT_TblPrBase.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"a062d08f44e31e3286594c9d6a13ae826cbb9248404b9b30468f7ff3b84e3a42"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TcPr.Parse (cyclomatic 20): CT_TcPr.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4746}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b1ace278c017068109a2c82b931ca10b1f0700078243e0e25f79aea4867e486"}},{"ruleId":"D1","level":"warning","message":{"text":"RecordFactoryInputStream.ReadNextRecord (cyclomatic 19): RecordFactoryInputStream.ReadNextRecord 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":"main/HSSF/Record/RecordFactoryInputStream.cs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc248c8a22c79b3850cd729e4068842896cf552fc4d18a8034ffd11fac00a36"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFShapeFactory.CreateShapeTree (cyclomatic 19): HSSFShapeFactory.CreateShapeTree 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":"main/HSSF/UserModel/HSSFShapeFactory.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd498ee642f5b33590ad865943f87bbeb22666c8facc3d90c77b2411fe244ef6"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFSheet.ShiftRows (cyclomatic 19): HSSFSheet.ShiftRows 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":1544}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a88a6f0f1ef8bcfe2b567fced5d381d0037253567996b8f3227e4b14974d04a"}},{"ruleId":"D1","level":"warning","message":{"text":"CellNumberFormatter.WriteFraction (cyclomatic 19): CellNumberFormatter.WriteFraction 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1da54bc12db7804c87205e41329ac77c98b1b89e6a94bc317695a8a7a50fb76"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaRenderer.ToFormulaString (cyclomatic 19): FormulaRenderer.ToFormulaString 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":"main/SS/Formula/FormulaRenderer.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecb8460721baf57aa266d03e6944a0abef93fb85936ee500ec21900e038d31b2"}},{"ruleId":"D1","level":"warning","message":{"text":"LinearRegressionFunction.EvaluateInternal (cyclomatic 19): LinearRegressionFunction.EvaluateInternal 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":"main/SS/Formula/Functions/LinearRegressionFunction.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0968ffde3c442c3a6c2badb3b6502a8925dfca64024fc4fc7cbbad85aedca65"}},{"ruleId":"D1","level":"warning","message":{"text":"DataFormatter.GetFormat (cyclomatic 19): DataFormatter.GetFormat 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"408ced4c7b94f98262f8ae052beba12a32c31de8ca584690b27dc8a6841ee956"}},{"ruleId":"D1","level":"warning","message":{"text":"Arrays.DeepEquals0 (cyclomatic 19): Arrays.DeepEquals0 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":"main/Util/Arrays.cs"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"662f72337d640a23a048fa3f08b74f41dc1259310e25cecddc397443ed7ecd61"}},{"ruleId":"D1","level":"warning","message":{"text":"XDDFTextBody.RetrieveProperties (cyclomatic 19): XDDFTextBody.RetrieveProperties 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":"ooxml/XDDF/UserModel/Text/XDDFTextBody.cs"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda011b13aace1ae6b348cb3e8b46de8394f397335948833ad6be44f18bc6a3c"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSheetXMLHandler.CheckForEmptyCellComments (cyclomatic 19): XSSFSheetXMLHandler.CheckForEmptyCellComments 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":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea81712ab319713cb5e4c9369b99f8b79c987cf98fdca735a9fb01caf27ba69b"}},{"ruleId":"D1","level":"warning","message":{"text":"StylesTable.WriteTo (cyclomatic 19): StylesTable.WriteTo 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":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"2904362a5caec0d41d351bdadde5cc24840f62ba4ea30a64605689b7959b2cec"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFWorkbook.OnDocumentRead (cyclomatic 19): XSSFWorkbook.OnDocumentRead 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":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c5d8aa02ddcaec53173ee89944ff75fa224e4a641cc0e1ef0054c1b3128a80"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_BubbleSer.Write (cyclomatic 19): CT_BubbleSer.Write 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":"OpenXmlFormats/Drawing/Chart/BubbleChart.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"51322faa41de9326ecd93f184c7288e84b5b9c8bd758ab6acd053973af8e632b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ShapeProperties.Parse (cyclomatic 19): CT_ShapeProperties.Parse 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":"OpenXmlFormats/Drawing/ShapeProperties.cs"},"region":{"startLine":2086}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e22f6829a790a07d3ecac6485a3665093bb8004931976c0e716d1e0c72620d"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ShapeProperties.Parse (cyclomatic 19): CT_ShapeProperties.Parse 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":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"155bddf830691c2191eb6665940534fe130f5b16888041a419b2293fd6a15e0e"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TextBodyProperties.Write (cyclomatic 19): CT_TextBodyProperties.Write 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":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ad01e7d85ae7c7140bf01f4bcf3c80ac4d5d3cf0830621429523dc761027e7"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_MailMerge.Parse (cyclomatic 19): CT_MailMerge.Parse 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":2964}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ad3d795c3be3e8153fcdc6238fca00ec673d8f5fa667579595e760b0160e52"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TblPr.Write (cyclomatic 19): CT_TblPr.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2831}}}],"partialFingerprints":{"codehealthFindingId/v1":"08dc4fa4707a35283a5c42ef2a132225ddea3ae6096ec6fc6a3fa743ea1bab0b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TcPrInner.Parse (cyclomatic 19): CT_TcPrInner.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4205}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc7644a664700480e01012f18fe08377c0607250e8dbb507617dac705201a569"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFCellUtil.CopyCell (cyclomatic 18): HSSFCellUtil.CopyCell 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":"main/HSSF/Util/HSSFCellUtil.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b3ee0c103ba4f076c088c73c9fc437332582f084de0288bed6c1df84fa109ec"}},{"ruleId":"D1","level":"warning","message":{"text":"ArrayFunction._evaluateTwoArrayArgs (cyclomatic 18): ArrayFunction._evaluateTwoArrayArgs 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":"main/SS/Formula/Functions/ArrayFunction.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bdb4b0a88386705422fe9a6d557f10c868bc42cf4f0ba7642b710ec965df99f"}},{"ruleId":"D1","level":"warning","message":{"text":"Complex.Evaluate (cyclomatic 18): Complex.Evaluate 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":"main/SS/Formula/Functions/Complex.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"581f8cdcba2ed41ac9710cfc462a96608ea29ffde3a88bac31b07c1c69b6f792"}},{"ruleId":"D1","level":"warning","message":{"text":"DStarRunner.testNormalCondition (cyclomatic 18): DStarRunner.testNormalCondition 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":"main/SS/Formula/Functions/DStarRunner.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f07817542a19b732b16c58e576497092b7041828c677c436d05b2a0f8b308e1"}},{"ruleId":"D1","level":"warning","message":{"text":"OperationEvaluationContext.GetDynamicReference (cyclomatic 18): OperationEvaluationContext.GetDynamicReference 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":"main/SS/Formula/OperationEvaluationContext.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"e169ccdf3578f307a6774cbc17dfd44294c24d3b8fd405735289a2e302fe3872"}},{"ruleId":"D1","level":"warning","message":{"text":"SheetUtil.CopyRow (cyclomatic 18): SheetUtil.CopyRow 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"406eb9497392433ebdfa9e182c352c98e460e53d4fab4dc7f8352e82bfc47841"}},{"ruleId":"D1","level":"warning","message":{"text":"EmbeddedExtractor.ExtractAll (cyclomatic 18): EmbeddedExtractor.ExtractAll 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":"ooxml/XSSF/Extractor/EmbeddedExtractor.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"899bd90f4684fc5b32e81d66f5b8f02a2747bb0085cd1596d03e8427f8442938"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSimpleShape.ProcessAutoNumGroup (cyclomatic 18): XSSFSimpleShape.ProcessAutoNumGroup 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":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8aea9fc3fd8b012cf573b2cc7225c5f39bba3172ccdb228ffc3dc177156961c"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_BarSer.Write (cyclomatic 18): CT_BarSer.Write 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":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c04e59497299321fc7427ebeba2a9837d3e39db74f9a8694a3fd34a4d457709"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ScatterSer.Write (cyclomatic 18): CT_ScatterSer.Write 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":"OpenXmlFormats/Drawing/Chart/ScatterChart.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed8e217d9f27ac2b3546161df54ec4353cb63b94d21fed0e52d7a6b22de49fef"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PivotTableDefinition.Write (cyclomatic 18): CT_PivotTableDefinition.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"5403534d6673bf05d2f7bd19a7132d3df80c9a549ad8130c03d18893049c1d0b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RPrElt.Parse (cyclomatic 18): CT_RPrElt.Parse 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":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ccef35256cda53ab1edc469a3d10271a1328922b292dfc60e241d5dc581e02"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Font.Parse (cyclomatic 18): CT_Font.Parse 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":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c3d962ef02d9bbfac16ab61db4d58befc4e7d5afb3e7f57d25b2f770392a32b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TblPrBase.Write (cyclomatic 18): CT_TblPrBase.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c983c358ed761ea21f36e5ecace7f7cf0f908d0c15bf2112bcc7b2314da4bda"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TrPr.Parse (cyclomatic 18): CT_TrPr.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3956}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e7e183ccf159421d3708adfbb3c5b6f150b09f59f5bfc84f72ea4d3b403f6ed"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TcPr.Write (cyclomatic 18): CT_TcPr.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4797}}}],"partialFingerprints":{"codehealthFindingId/v1":"b939d506a8242802703be128b1100481a3e151ebe2dbc6d05d6e2b3e9b6ec377"}},{"ruleId":"D1","level":"warning","message":{"text":"Section.Section.ctor (cyclomatic 17): Section.Section.ctor 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":"main/HPSF/Section.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b88c81cde87e12786c0539fa8b2c451f128ea52393c04d0a9fd269739264b9"}},{"ruleId":"D1","level":"warning","message":{"text":"ChartFormatsAggregate.ChartFormatsAggregate.ctor (cyclomatic 17): ChartFormatsAggregate.ChartFormatsAggregate.ctor 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":"main/HSSF/Record/Aggregates/Chart/ChartFormatsAggregate.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e22c5cf8e97cb4e94cab81b7693602d0d0b1889f200eab727fc7e3f7ebcb30"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFChart.GetSheetCharts (cyclomatic 17): HSSFChart.GetSheetCharts 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4985df4885c0307d17f65bc610826f35cbe80cd17b62278d6cd473edf3e850d"}},{"ruleId":"D1","level":"warning","message":{"text":"CellNumberPartHandler.HandlePart (cyclomatic 17): CellNumberPartHandler.HandlePart 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":"main/SS/Format/CellNumberPartHandler.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"548460e2d726d264c7a420a4498835e4af3c172f676a34cf21d6cfdafaf5e49c"}},{"ruleId":"D1","level":"warning","message":{"text":"FormulaParser.ParseSimpleRangePart (cyclomatic 17): FormulaParser.ParseSimpleRangePart 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c87f813387b78cfe4b561c316beb1e154f8721662ccdb688480c5a62e831864"}},{"ruleId":"D1","level":"warning","message":{"text":"PercentRank.calculateRank (cyclomatic 17): PercentRank.calculateRank 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":"main/SS/Formula/Functions/PercentRank.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea7f47de6c8dfb09cd1ae0c04442cd97a6aa41c5712e58f5694db93075a2f270"}},{"ruleId":"D1","level":"warning","message":{"text":"OperandClassTransformer.TransformNode (cyclomatic 17): OperandClassTransformer.TransformNode 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":"main/SS/Formula/OperandClassTransformer.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"8224d9839f2753ad7ad2269cde2db827b22939f3964def5d4799a8bf06967e6f"}},{"ruleId":"D1","level":"warning","message":{"text":"DataFormatter.CreateFormat (cyclomatic 17): DataFormatter.CreateFormat 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d5ea47adac32fe5236cf9457b9f0ddc991dc7793e0f8ca91a1c9739771c3fd"}},{"ruleId":"D1","level":"warning","message":{"text":"CellReferenceParser.TryParse (cyclomatic 17): CellReferenceParser.TryParse 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":"main/SS/Util/CellReferenceParser.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f90642f51235a09d1e2bdbeba6e01ca68f76b1d4bd9dda001d003ae7059f74"}},{"ruleId":"D1","level":"warning","message":{"text":"SheetUtil.CopyRow (cyclomatic 17): SheetUtil.CopyRow 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd4b6e0f6c94ef9f6e2a8037409ab5dc745f39d55a222bb041c586a044c9144b"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFExportToXml.ExportToXML (cyclomatic 17): XSSFExportToXml.ExportToXML 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":"ooxml/XSSF/Extractor/XSSFExportToXml.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0398d8f3c0193d04a8d77076407d8451da7493ea00fe3bc6642d5fdad752d95"}},{"ruleId":"D1","level":"warning","message":{"text":"StylesTable.ReadFrom (cyclomatic 17): StylesTable.ReadFrom 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":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"57e0817eb887622b29f712a10c81dbd972d4fca32a25515f7e1b5b20fb99e0a5"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSheet.CopyColumn (cyclomatic 17): XSSFSheet.CopyColumn 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":4161}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ede1d7481081f6821e3978883440cc09b8eeaa029912d502f4c79066612252"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSimpleShape.ApplyAttributes (cyclomatic 17): XSSFSimpleShape.ApplyAttributes 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":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"4622c2f0a910ff9e4051e681763048bbb3cb500687611ae70f2629237c801038"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFTextParagraph.SetBullet (cyclomatic 17): XSSFTextParagraph.SetBullet 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":"ooxml/XSSF/UserModel/XSSFTextParagraph.cs"},"region":{"startLine":1063}}}],"partialFingerprints":{"codehealthFindingId/v1":"300a2ffaab24e392099ea3d26297d4d4e4bb2e4615893da4ae66d1afea7be213"}},{"ruleId":"D1","level":"warning","message":{"text":"XWPFRun._getText (cyclomatic 17): XWPFRun._getText 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":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c200cc97048cbd0159d0e3b2fb105f71459ca69416764deb70169fcf1c1d19"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_AreaSer.Write (cyclomatic 17): CT_AreaSer.Write 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":"OpenXmlFormats/Drawing/Chart/AreaChart.cs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd1e9a73641a423096bf6b2fea13957d8a292e687ee9b92eb4ef32a08d8aa6b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_BarSer.Parse (cyclomatic 17): CT_BarSer.Parse 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":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3fc7aa00805e650acddc59cee3fc544525ac0c091a45fbd0444dfb24a2f44d"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_BubbleSer.Parse (cyclomatic 17): CT_BubbleSer.Parse 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":"OpenXmlFormats/Drawing/Chart/BubbleChart.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbfb58da5e99dfe20d6ca39d6749c9cfc89b0170073c3928654b086348be373c"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_LineSer.Write (cyclomatic 17): CT_LineSer.Write 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":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89b3489f6d8dd3c958d4762e9c2983ee0a30e816b96b99c831e50bccecc6bb3"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ShapeProperties.Write (cyclomatic 17): CT_ShapeProperties.Write 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":"OpenXmlFormats/Drawing/ShapeProperties.cs"},"region":{"startLine":2131}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e2b5e263aeaea25072788e76617d9a91488da65b606a21c92e2be1be255d50e"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ShapeProperties.Write (cyclomatic 17): CT_ShapeProperties.Write 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":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f943400d1662c0d34cc1a1c9075daf8f0fea2fc5851e5ebf8ddeea1c9d47a4b"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Stroke.Parse (cyclomatic 17): CT_Stroke.Parse 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":2598}}}],"partialFingerprints":{"codehealthFindingId/v1":"e07ec563284d23f66df62b887f8dcc5d45112323cb0c979dcaabc067b70dcb73"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_MailMerge.Write (cyclomatic 17): CT_MailMerge.Write 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":3009}}}],"partialFingerprints":{"codehealthFindingId/v1":"1547dcf8a370fd4ffbd249e8c992173ad831a66fc1f0520f5226d154d9a8d802"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TcPrInner.Write (cyclomatic 17): CT_TcPrInner.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4250}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f321370805b327fd045f83ce8f860b61beddb2a833e06ba167458167b5a42a3"}},{"ruleId":"D1","level":"warning","message":{"text":"Property.ToString (cyclomatic 16): Property.ToString 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":"main/HPSF/Property.cs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"d373a2fa00211114b44f65e721906419a685702f2b43f31872ad19dea19d57c9"}},{"ruleId":"D1","level":"warning","message":{"text":"HSSFChart.RemoveSeries (cyclomatic 16): HSSFChart.RemoveSeries 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":1346}}}],"partialFingerprints":{"codehealthFindingId/v1":"6652b6c5b41a7855ca6b4c4dd866f635e38bd24529be6768ddd5dbb61caff62c"}},{"ruleId":"D1","level":"warning","message":{"text":"DocumentFactoryHelper.ScanForPassword (cyclomatic 16): DocumentFactoryHelper.ScanForPassword 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":"main/POIFS/FileSystem/DocumentFactoryHelper.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb96df3369fe4810d617775a267965a9160cedda57d0e34d5bbebd7045f9bd5"}},{"ruleId":"D1","level":"warning","message":{"text":"CellGeneralFormatter.FormatValue (cyclomatic 16): CellGeneralFormatter.FormatValue 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":"main/SS/Format/CellGeneralFormatter.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"8892290ef050945de765310ecc85680d5e3f070cd34a921752cef49626889eca"}},{"ruleId":"D1","level":"warning","message":{"text":"RelationalOperationEval.DoCompare (cyclomatic 16): RelationalOperationEval.DoCompare 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":"main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"158a53074361ae94bea5150e7dc403d2e0996e37139ca7f9b305808aa1bdbc43"}},{"ruleId":"D1","level":"warning","message":{"text":"StringMatcher.GetWildCardPattern (cyclomatic 16): StringMatcher.GetWildCardPattern has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Countif.cs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"77becdb3a7389526200717a3af682eccf973bd43376f90a8e1f2ae5e09bfd2d6"}},{"ruleId":"D1","level":"warning","message":{"text":"Indirect.ParseWorkbookAndSheetName (cyclomatic 16): Indirect.ParseWorkbookAndSheetName 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":"main/SS/Formula/Functions/Indirect.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"11ffef9b72a1b27cd8390f92b2986fe4ae5e8d65fc61492f55671fdf23550aa0"}},{"ruleId":"D1","level":"warning","message":{"text":"LookupUtils.BinarySearchIndexOfValue (cyclomatic 16): LookupUtils.BinarySearchIndexOfValue 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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"161a49fe261d0aeec89fabf3c1aa196775057345439abcacc32221e0758206d4"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkbookUtil.CreateSafeSheetName (cyclomatic 16): WorkbookUtil.CreateSafeSheetName has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/WorkbookUtil.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3af285ea5b5b09406466e7d7ce479ebfbcd1af68a3320257b5be4b8bd01911a"}},{"ruleId":"D1","level":"warning","message":{"text":"Arrays.DeepToString (cyclomatic 16): Arrays.DeepToString 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":"main/Util/Arrays.cs"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a49a3f14bcf39090c106ce6119e8f7c40db0b76abf4c07baca6bd391ca772d5"}},{"ruleId":"D1","level":"warning","message":{"text":"BigInteger.BigInteger.ctor (cyclomatic 16): BigInteger.BigInteger.ctor 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":"main/Util/BigInteger.cs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"45d072cd57dfca2fe8480f242ae5f751f0e157156c891775c15664ea2ac944f2"}},{"ruleId":"D1","level":"warning","message":{"text":"BigInteger.ShiftRight (cyclomatic 16): BigInteger.ShiftRight 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":"main/Util/BigInteger.cs"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a123aa16d050a3d6cb80ec1d8c506ad3f0d8659057ffbe7f2f50c4d9ca75f0"}},{"ruleId":"D1","level":"warning","message":{"text":"IdentifierManager.Reserve (cyclomatic 16): IdentifierManager.Reserve 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":"ooxml/Util/IdentifierManager.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"04573b8181b9a7fb0e02fb9a6e0268f658dd03f0487e004d3ae7b6fb1c165367"}},{"ruleId":"D1","level":"warning","message":{"text":"IdentifierManager.Release (cyclomatic 16): IdentifierManager.Release 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":"ooxml/Util/IdentifierManager.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"64653fa6203449afffb6b3f7395aa1c201d9bc1dbe5fd27bd0ee322a2b34bb3a"}},{"ruleId":"D1","level":"warning","message":{"text":"SheetDataWriter.OutputQuotedString (cyclomatic 16): SheetDataWriter.OutputQuotedString has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SheetDataWriter.cs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aef3269416d6d863eecf25712b22d28a422b90172edaf8fbd2c582dea29b7b5"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFCellBorder.GetBorder (cyclomatic 16): XSSFCellBorder.GetBorder 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":"ooxml/XSSF/UserModel/Extensions/XSSFCellBorder.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d1d4852530b35d8ac534e8e5e2b28c746b3d03d8add182c7e35203f40823ffc"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFCell.SetCellType (cyclomatic 16): XSSFCell.SetCellType 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":"ooxml/XSSF/UserModel/XSSFCell.cs"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ced25223a6e1e3b030cc9977bfc41b76b5b9aeb485a150675f65a0b8e578aae"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFDataValidationHelper.CreateValidation (cyclomatic 16): XSSFDataValidationHelper.CreateValidation 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":"ooxml/XSSF/UserModel/XSSFDataValidationHelper.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8d796a6d60ada42b5e7352b1989893ba1be2b8f2866082365281b7d32bb456"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSheet.Write (cyclomatic 16): XSSFSheet.Write 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":1669}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec6d43424ad75ef92f12bb1c18e03923da039cf90340ab865a4c8a3ed46893d7"}},{"ruleId":"D1","level":"warning","message":{"text":"XSSFSheet.CopyCell (cyclomatic 16): XSSFSheet.CopyCell 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6363}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b1400d10fc2d9d1f8f5c0d685091eff7c592e8568432476b7ff3a460411de2"}},{"ruleId":"D1","level":"warning","message":{"text":"XWPFPictureData.Equals (cyclomatic 16): XWPFPictureData.Equals has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFPictureData.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6822c2f7514a779c46175ba5b1427fa8366d5a376b51e88b9e4f61bf0982d1d"}},{"ruleId":"D1","level":"warning","message":{"text":"XWPFSettings.SetEnforcementEditValue (cyclomatic 16): XWPFSettings.SetEnforcementEditValue 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":"ooxml/XWPF/Usermodel/XWPFSettings.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"852e47a3bff615ccd041d5aa80d8f895886004257864b4d65598073ce7976d4e"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_LineSer.Parse (cyclomatic 16): CT_LineSer.Parse 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":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"022872e1f99cd4a57c16ab2c8d3de36fb7b5484bd9afce29ab622517b86a4db3"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_OfPieChart.Write (cyclomatic 16): CT_OfPieChart.Write 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":"OpenXmlFormats/Drawing/Chart/PieChart.cs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a95fd64fe850a2678747ae68ce093b024ecee173116e704a7f91d80160a108"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_ScatterSer.Parse (cyclomatic 16): CT_ScatterSer.Parse 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":"OpenXmlFormats/Drawing/Chart/ScatterChart.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"0157f9559e6a45240092383711b98d0ab62859f6eb07e699282277743d7368d7"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_TextBodyProperties.Parse (cyclomatic 16): CT_TextBodyProperties.Parse 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":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac22df62f91ae371fd02570141fb6fc52a7a373914eab5dda833aaed87b150c"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_SharedItems.Write (cyclomatic 16): CT_SharedItems.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":1840}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf227ee60a10a7307d140154afa019903acea27d40d0eb27d4f22e8b96e05086"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_CacheField.Parse (cyclomatic 16): CT_CacheField.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":2237}}}],"partialFingerprints":{"codehealthFindingId/v1":"009f701e4699d71baf2883338a012f4e0f41d87737b7b0bae3d88d6cd78611a6"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_PivotHierarchy.Parse (cyclomatic 16): CT_PivotHierarchy.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":5877}}}],"partialFingerprints":{"codehealthFindingId/v1":"1367650247736a8d37b2ea33182a0eaaf6328311dbb19565378a72d2122fd96d"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_RPrElt.Write (cyclomatic 16): CT_RPrElt.Write 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":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb3a438f2f332cfc896e187286090f46d7f5fbd2b3fea6c217c380e78d20460"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Lvl.Parse (cyclomatic 16): CT_Lvl.Parse 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":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e34fefcf2bd267b72e0c2acca75f27f5d07b0a0cca7d4651ec9a73404147a6e"}},{"ruleId":"D1","level":"warning","message":{"text":"CT_Lvl.Write (cyclomatic 16): CT_Lvl.Write 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":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":1350}}}],"partialFingerprints":{"codehealthFindingId/v1":"49acc9f651eb9e8e3d86cce415c9b4e5089c0b56b67c5eefb7f8b570109274ad"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ParaRPrOriginal.Write (cognitive 121): CT_ParaRPrOriginal.Write has cognitive complexity 121 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":5643}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd05bf0d4a90b02a88a8a1bab4f57212efedb6b64a6f7d0ef016c5fc18369d92"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RPrOriginal.Write (cognitive 117): CT_RPrOriginal.Write has cognitive complexity 117 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":7424}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea397d2e05a6e5fd4910925fba2ee1ed85778fbdd98d300364954c5698f1b12"}},{"ruleId":"D2","level":"warning","message":{"text":"SharedStringsTable.ReadFromStreamViaXmlReader (cognitive 112): SharedStringsTable.ReadFromStreamViaXmlReader 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":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a4af86e972356f54c8e93490e3ef5f8db8688d23913b8d9fe5c96344315443"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkbookEvaluator.EvaluateFormula (cognitive 110): WorkbookEvaluator.EvaluateFormula has cognitive complexity 110 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"a568a0865eb56c1f1148f6b73229480918fd30de8048d1b5799299568dc980e6"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Settings.Write (cognitive 105): CT_Settings.Write has cognitive complexity 105 (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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"14b4ce0c3f0f88a1d7c4687044345a4b347c3500275d0d7c761c7e83f5096fc3"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Settings.Parse (cognitive 100): CT_Settings.Parse has cognitive complexity 100 (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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d54e85ccaf93fa51684e4f0b1eb01d03debd306cb0607d0448e959c57d42454"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseStructuredReference (cognitive 96): FormulaParser.ParseStructuredReference 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b369bdf2ee53777873a19c05fc33be70f81846f6d845ceda8e20d2a8389e67"}},{"ruleId":"D2","level":"warning","message":{"text":"OperatorEnumHelper.IsValid (cognitive 83): OperatorEnumHelper.IsValid has cognitive complexity 83 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/EvaluationConditionalFormatRule.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"df0d21e1792508f93a53005c3c26c48e3289fd29a597738616a45c9397f7c80c"}},{"ruleId":"D2","level":"warning","message":{"text":"Properties.Load (cognitive 80): Properties.Load 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":"main/Util/Collections/Properties.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c6756200419f31d8883a408a0b0555a25f85bb1c67d3a66f2ab8d344eb019a0"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PivotTableDefinition.Parse (cognitive 77): CT_PivotTableDefinition.Parse has cognitive complexity 77 (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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a23315732741a6533f3889e580233a8b41bdbe547cfd492c4f5567c5316ec05"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFOptimiser.OptimiseCellStyles (cognitive 72): HSSFOptimiser.OptimiseCellStyles has cognitive complexity 72 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFOptimiser.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"70080381404635a21d64e0a57ee0fd89a9c93700e2ea8c19c1dcd3a53880473b"}},{"ruleId":"D2","level":"warning","message":{"text":"EscherDump.DumpOld (cognitive 68): EscherDump.DumpOld 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":"main/DDF/EscherDump.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"36706556b9d55939168da04239546010311851f331d7abd5ff42ac7375736434"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Compat.Parse (cognitive 68): CT_Compat.Parse has cognitive complexity 68 (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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":4891}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d76f85520c41f67f8bdbf04fd6a3d2c48482e85268d9831995ce240886b93a3"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalSheet.InternalSheet.ctor (cognitive 66): InternalSheet.InternalSheet.ctor has cognitive complexity 66 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ff9ca1883b24404c5e657ebc9a9e9f8d1f847627ea7cb75fbe4485b2e61007"}},{"ruleId":"D2","level":"warning","message":{"text":"CellNumberFormatter.FormatValue (cognitive 65): CellNumberFormatter.FormatValue 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a051ec820d74d9780406ffa320595bbc675fae6e94211c31f548d2ba8874706"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Compat.Write (cognitive 65): CT_Compat.Write has cognitive complexity 65 (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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":5034}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3868504daf883c1f5b87716c601c947ff20fe53ec86c6aa0173dc5dd45b15a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_R.Write (cognitive 62): CT_R.Write has cognitive complexity 62 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f0b9e272c370259fb7827a40a623865b4a7a8255e65b7c47533297139f4392"}},{"ruleId":"D2","level":"warning","message":{"text":"PackagePartName.CheckPCharCompliance (cognitive 61): PackagePartName.CheckPCharCompliance 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":"openxml4Net/OPC/PackagePartName.cs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b08d4d3a534a87c600d2a41e27d98f2bf334f5b540d958f0da3c59f8ff0dbd"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseRangeable (cognitive 59): FormulaParser.ParseRangeable 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"05946a0d15e45c7df59ed51ac62bc31f800108be3503d4593be71e492e71aee5"}},{"ruleId":"D2","level":"warning","message":{"text":"DataFormatter.CreateDateFormat (cognitive 59): DataFormatter.CreateDateFormat 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce2c494b06e728b54b1156de0e75db7a6fec32f50ae6d02ca48cf953ef6a3e1a"}},{"ruleId":"D2","level":"warning","message":{"text":"CellNumberFormatter.CellNumberFormatter.ctor (cognitive 58): CellNumberFormatter.CellNumberFormatter.ctor 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"58363a18fe8ee30aabbe647c55ab6e31cf12295151f8522289ae2cf2da0d3259"}},{"ruleId":"D2","level":"warning","message":{"text":"EvaluationConditionalFormatRule.CheckFilter (cognitive 58): EvaluationConditionalFormatRule.CheckFilter has cognitive complexity 58 (threshold 15). Of this number, 29 points are the body\u0027s own statements and 29 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":"main/SS/Formula/EvaluationConditionalFormatRule.cs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"1868bed9c9f66ab788325912d6f8f1e4fd5c8c1820a9fbe956932c1ee0d694b8"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartRecordAggregate.WriteStartBlock (cognitive 57): ChartRecordAggregate.WriteStartBlock has cognitive complexity 57 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/Chart/ChartRecordAggregate.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2d5f09cd584ecd0ba08db9e4cb068a6ed93bb4d54007e98aa28eb9e6eca4341"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_P.Write (cognitive 56): CT_P.Write has cognitive complexity 56 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"4224657129d659f90dc374b23f378ec05af9f47474014b21a4116bf0a5f0468f"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalWorkbook.FindDrawingGroup (cognitive 54): InternalWorkbook.FindDrawingGroup 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":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":2696}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d5ed9a2b310f70e577f33abc3565f815711d02d638db0cdbbfc27dc4dda89c1"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFOptimiser.OptimiseFonts (cognitive 54): HSSFOptimiser.OptimiseFonts 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":"main/HSSF/UserModel/HSSFOptimiser.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b07281d738b4713bf32880569f47076d1423417a6538df64f5faa4d32b22c69"}},{"ruleId":"D2","level":"warning","message":{"text":"Value.ConvertTextToNumber (cognitive 53): Value.ConvertTextToNumber 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":"main/SS/Formula/Functions/Value.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"85b39f78fef1107a97c44088438ae7f5497d1f861cf033715dfcf3df00582597"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Body.Write (cognitive 53): CT_Body.Write has cognitive complexity 53 (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":"OpenXmlFormats/Wordprocessing/Document.cs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"032621a1c9076c4de441e4e508d897751eb53e766b95f97810d75dd404bbc1e1"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_FtnEdn.Write (cognitive 52): CT_FtnEdn.Write has cognitive complexity 52 (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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"246a157d5a606388424f28437c345f0cab44e0de757d4f38285c62d73d06b136"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RunTrackChange.Parse (cognitive 52): CT_RunTrackChange.Parse has cognitive complexity 52 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":2079}}}],"partialFingerprints":{"codehealthFindingId/v1":"64ae37f58e8582dd8ba36b70576dfef32ec330e49ff91e98c70d1e6a58085c0b"}},{"ruleId":"D2","level":"warning","message":{"text":"SheetUtil.ToDataTable (cognitive 51): SheetUtil.ToDataTable has cognitive complexity 51 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fed9ff05fe686f14c2c0d01ed33beca4d775d4bb47b6706636466e4bf0a178a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PivotField.Parse (cognitive 51): CT_PivotField.Parse has cognitive complexity 51 (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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":2139}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0df337e1bcc6078373e5212193ee177ec4f7742f77e11983e6b84f031e7988"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RunTrackChange.Write (cognitive 51): CT_RunTrackChange.Write has cognitive complexity 51 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":2335}}}],"partialFingerprints":{"codehealthFindingId/v1":"26b862c33eeb7ccc3d948b24eff32203cd67ac469cc49ab0b4b9d7ca01847b5e"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Tbl.Write (cognitive 50): CT_Tbl.Write has cognitive complexity 50 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"696153f4044e1bb744dd30f0b7d71317a32f2c3f496310741dcd2d9a81a4e2c5"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Tbl.Parse (cognitive 49): CT_Tbl.Parse has cognitive complexity 49 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ebe56ece89b5abe58c59baa92120fd90b46e4cbfc70c6dd8388910a8fa4b0a8"}},{"ruleId":"D2","level":"warning","message":{"text":"VariantSupport.Write (cognitive 48): VariantSupport.Write has cognitive complexity 48 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/VariantSupport.cs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2e645515e35b85610424337995530e4f7916ceb1ba70e3b927b25e1de55fe83"}},{"ruleId":"D2","level":"warning","message":{"text":"DStarRunner.testNormalCondition (cognitive 48): DStarRunner.testNormalCondition has cognitive complexity 48 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/DStarRunner.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"5887134a673340480bd787b32ce8541b67a233d0ca02676bb8b4f2d463fbdbd4"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheetXMLHandler.StartElement (cognitive 48): XSSFSheetXMLHandler.StartElement has cognitive complexity 48 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc22da4779ecd4198cfc742aa27b2250af5bea130087c78217bc168b17118364"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFExportToXml.ExportToXML (cognitive 48): XSSFExportToXml.ExportToXML has cognitive complexity 48 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExportToXml.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"59481c0e280d16b1038f4085e528080071fdececd36518a8de0cd8d7c20afd40"}},{"ruleId":"D2","level":"warning","message":{"text":"SXSSFWorkbook.CopyStreamAndInjectWorksheet (cognitive 48): SXSSFWorkbook.CopyStreamAndInjectWorksheet has cognitive complexity 48 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c296668ebefb9902aa09ebc39e23bd0b6b0474abbbbd94628a69922feb33140"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFParagraph.XWPFParagraph.ctor (cognitive 48): XWPFParagraph.XWPFParagraph.ctor has cognitive complexity 48 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f9bcd38be32132617c89c5bc8f43754ab83a71c7f6d26df76bc8f4b28b9281c"}},{"ruleId":"D2","level":"warning","message":{"text":"PackagingUriHelper.RelativizeUri (cognitive 48): PackagingUriHelper.RelativizeUri has cognitive complexity 48 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/PackagingUriHelper.cs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4d54b560e163afb2ea1f9ca1da04a2ed13f8c66d221a5e336f44cc891615e66"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Shapetype.Write (cognitive 48): CT_Shapetype.Write has cognitive complexity 48 (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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":3842}}}],"partialFingerprints":{"codehealthFindingId/v1":"78625f4a1e663e3e4aec4d98d5d8bb8f051f63133b7310dd75cf643bea8bafa4"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ParaRPr.Parse (cognitive 47): CT_ParaRPr.Parse has cognitive complexity 47 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1924}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3860bcc6c0222311568ca35f27caf7bbe1e81b4bb0e046be6106fa954ae0ad6"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RubyContent.Write (cognitive 47): CT_RubyContent.Write has cognitive complexity 47 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac94dbaac7c826d413310affcdf70668ab7df07d09c4694b830dbe6d523b386c"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFChart.CreateSeries (cognitive 46): HSSFChart.CreateSeries 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a9516629764c4b3c18e5b1142b205b30c18f13b1373b86d82149033dd06e54"}},{"ruleId":"D2","level":"warning","message":{"text":"Index.GetValueFromArea (cognitive 46): Index.GetValueFromArea 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":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e971a3332289b7b7c06d97f2f9d7ad8b39be0a15d6a91a3be6507dd0ec8dc86"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFParagraph.SearchText (cognitive 46): XWPFParagraph.SearchText 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":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d750bd173de131507ef1156c44f138e0fbe748c98baa25d757ad880f2ec41d"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ParaRPrOriginal.Parse (cognitive 46): CT_ParaRPrOriginal.Parse has cognitive complexity 46 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":5505}}}],"partialFingerprints":{"codehealthFindingId/v1":"783f717db464eadab71dd6b0b5892f91c4a98a6c8e29082e645b3aaaf91ea6f2"}},{"ruleId":"D2","level":"warning","message":{"text":"DataFormatter.cleanFormatForNumber (cognitive 45): DataFormatter.cleanFormatForNumber 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa70cb36fd74eb33e0f9962800b572c76dff22eb41a737179df452c5d9ac6c24"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlConverter.ProcessRow (cognitive 45): ExcelToHtmlConverter.ProcessRow 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a7943b8b34ac7eea801d13a56ed5ad7972a0364fca1ac1fbb63b71ad0d7b454"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.ShiftCommentsAndRows (cognitive 44): XSSFSheet.ShiftCommentsAndRows 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":5646}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a160f2790b2c93fbc33578fb482d3f9d3ed98f99588b723a10a5d8adacd648f"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ParaRPr.Write (cognitive 44): CT_ParaRPr.Write has cognitive complexity 44 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2025}}}],"partialFingerprints":{"codehealthFindingId/v1":"8821d52ddf9316ec9f58589a6cc68362ee96cb2e4506e0a5e2aee4e4d1dd5405"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_R.Parse (cognitive 44): CT_R.Parse has cognitive complexity 44 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5ce4848df4f44ee06c02807144ed0b5592f1a0dbce61e143779267ec21a250"}},{"ruleId":"D2","level":"warning","message":{"text":"ArrayFunction._evaluateTwoArrayArgs (cognitive 43): ArrayFunction._evaluateTwoArrayArgs 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":"main/SS/Formula/Functions/ArrayFunction.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"526387a54038f6e85c8bb77c09425c606162825c25c9d70883083ee832a45d1f"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Worksheet.Write (cognitive 43): CT_Worksheet.Write has cognitive complexity 43 (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":"OpenXmlFormats/Spreadsheet/Sheet/CT_Worksheet.cs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dce5963f3de68149292ba285a46540db4c08fdc356dcf9c500f1a2a69e21d16"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RPr.Parse (cognitive 43): CT_RPr.Parse has cognitive complexity 43 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":4065}}}],"partialFingerprints":{"codehealthFindingId/v1":"5355e011cdd884639fda6543fa0c3d03a694132ec62c907a8535be69ef02f0e9"}},{"ruleId":"D2","level":"warning","message":{"text":"OPCPackage.GetParts (cognitive 42): OPCPackage.GetParts 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":"openxml4Net/OPC/OPCPackage.cs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"825c600c2caa41943a9431be992f1eba13425767f4f61bae49280f85d304b601"}},{"ruleId":"D2","level":"warning","message":{"text":"ZipPackage.GetPartsImpl (cognitive 42): ZipPackage.GetPartsImpl 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":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"28ca2fc745ac59dfa1993327400e62299c85cc0b818e8758fed8c852843004b4"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Worksheet.Parse (cognitive 42): CT_Worksheet.Parse has cognitive complexity 42 (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":"OpenXmlFormats/Spreadsheet/Sheet/CT_Worksheet.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"2320df37fb82c0020dd632f3ff63163ea7bebfc11db7ca31d7238d0443fbf80e"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PPr.Parse (cognitive 42): CT_PPr.Parse has cognitive complexity 42 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":981}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a8c96ff8f7d7dcf539bb0b6e6999908d787301423352a449e08a391842c661"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RPrOriginal.Parse (cognitive 42): CT_RPrOriginal.Parse has cognitive complexity 42 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":7294}}}],"partialFingerprints":{"codehealthFindingId/v1":"80613d39d5d4b11033bf5f1fbc79a834437df5840976128e2864ffbc67fc5f0b"}},{"ruleId":"D2","level":"warning","message":{"text":"LookupUtils.BinarySearchIndexOfValue (cognitive 41): LookupUtils.BinarySearchIndexOfValue 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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"e680da70976f2ee1fda1b4b9edf974efc562d0a24a385906acc72f3506857811"}},{"ruleId":"D2","level":"warning","message":{"text":"MissingRecordAwareHSSFListener.ProcessRecord (cognitive 40): MissingRecordAwareHSSFListener.ProcessRecord 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":"main/HSSF/EventUserModel/MissingRecordAwareHSSFListener.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"f693b6a35a3e72e211b171c09affd0d1e65f9e4eb84b3f655cef80085bfbb0b9"}},{"ruleId":"D2","level":"warning","message":{"text":"CellGeneralFormatter.FormatValue (cognitive 40): CellGeneralFormatter.FormatValue 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":"main/SS/Format/CellGeneralFormatter.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"b571ff5e7013b12b164625dde58632081579c27dc2077b670ad1c76cacc70eea"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheetXMLHandler.EndElement (cognitive 40): XSSFSheetXMLHandler.EndElement 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":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dba8426bc7857affae0e511af88ed1a7f79ee54095b9a1fc5c2c467a4909235"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RPr.Write (cognitive 40): CT_RPr.Write 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":4158}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ad09f878abf53077c8371d298589f4425418a8c84e8a90e981bdd982095c8d"}},{"ruleId":"D2","level":"warning","message":{"text":"EvaluationCache.NotifyUpdateCell (cognitive 39): EvaluationCache.NotifyUpdateCell 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":"main/SS/Formula/EvaluationCache.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aef388c87370888ddf76e3f9f511a45c06ff533696940836be491a8131b32c3"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaShifter.RowMoveAreaPtg (cognitive 39): FormulaShifter.RowMoveAreaPtg has cognitive complexity 39 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdfedbcd377b62ac60ebfb771d33dc760266cc35a82a986bf4d62af7a678cb0b"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaShifter.ColumnMoveAreaPtg (cognitive 39): FormulaShifter.ColumnMoveAreaPtg has cognitive complexity 39 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa2dab9e9ce44dec287a4bc411e1d75a61dfd5cf9fa3a4e559cc7c8454be35ef"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheetXMLHandler.CheckForEmptyCellComments (cognitive 39): XSSFSheetXMLHandler.CheckForEmptyCellComments 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":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"76b48fe1ce1ea869a5f4eb1eac21aa8e91505093f602e51c913fcc8b334b0968"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.ShiftCommentsAndColumns (cognitive 39): XSSFSheet.ShiftCommentsAndColumns 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":5752}}}],"partialFingerprints":{"codehealthFindingId/v1":"b435fb7cdcc4f8047e1b4eaeb74a17a1c2934dff85a53127ac2b8dea693f4e09"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PPr.Write (cognitive 39): CT_PPr.Write has cognitive complexity 39 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f61a9f632b985a574cebc3666442d5bd0823deb65c373e38697ca9f88e42a27"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PPrBase.Parse (cognitive 39): CT_PPrBase.Parse has cognitive complexity 39 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":6236}}}],"partialFingerprints":{"codehealthFindingId/v1":"41f949f9a532c84837507ee3ebb46e94e1a00db7fe83b5da8e0bda1f55878dda"}},{"ruleId":"D2","level":"warning","message":{"text":"RLEDecompressingInputStream.ReadChunk (cognitive 38): RLEDecompressingInputStream.ReadChunk 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":"main/Util/RLEDecompressingInputStream.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b48b4021d4052f05cf0fc0f195898016f5d3126618cdc675f6024dbd202eba7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlConverter.BuildStyle (cognitive 38): ExcelToHtmlConverter.BuildStyle 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"25230604d111e35c77d10d043b9c7b8f94f1d3caa7956afdc361b14da4a8f8c0"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_P.Parse (cognitive 38): CT_P.Parse has cognitive complexity 38 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce62c22c17bfe5b2b9691fbb5f2703c45afd608c1fe3241bbd76be3249cb2aa"}},{"ruleId":"D2","level":"warning","message":{"text":"CellNumberFormatter.Writeint (cognitive 37): CellNumberFormatter.Writeint 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"0008a24acee671a429dd30ea0b271471f9967c0d38bd095cf677607c0bdc787d"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SmartTagRun.Write (cognitive 37): CT_SmartTagRun.Write has cognitive complexity 37 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1482}}}],"partialFingerprints":{"codehealthFindingId/v1":"806042b5f5eb6e6c03737b95bedbbe5a18da3f7d01b076cb205054b4c1b44c15"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFCell.SetCellType (cognitive 36): HSSFCell.SetCellType 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":"main/HSSF/UserModel/HSSFCell.cs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ecff391fa56796de4f3d619bc4ab430208b027048e237cbb473b96a41d6c78"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFCellUtil.CopyCell (cognitive 36): HSSFCellUtil.CopyCell 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":"main/HSSF/Util/HSSFCellUtil.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfae3c63ecfc7a1a34b43ade9aed9371cda43245195fc420e0978872259c6604"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.OnDeleteFormula (cognitive 36): XSSFSheet.OnDeleteFormula 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":1816}}}],"partialFingerprints":{"codehealthFindingId/v1":"10ae6d647e4504ebeb37509f0efdad7f8a1e45d5e1678c7efe91132ea2cdc578"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SmartTagRun.Parse (cognitive 36): CT_SmartTagRun.Parse has cognitive complexity 36 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"0db4b6da7bd026f7a8e3b50d3807d1eeb90d4487d332d77ca168287b7eb984ca"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PPrBase.Write (cognitive 36): CT_PPrBase.Write has cognitive complexity 36 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":6321}}}],"partialFingerprints":{"codehealthFindingId/v1":"888522fee12bb670097bba8dc66850a52c1033d943caeb400f01c4f159deec9c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtPr.Write (cognitive 36): CT_SdtPr.Write has cognitive complexity 36 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1948}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e3da006ee279b5e9fe93fc430a598d6dd6a82960402ae82d41dc3d48452f906"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Row.Parse (cognitive 36): CT_Row.Parse has cognitive complexity 36 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":5555}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2135eb771e9214beeefd6bfb23cf6ced585ac6151422c06b767a7e98d3def2c"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFChart.GetSheetCharts (cognitive 35): HSSFChart.GetSheetCharts 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"1add90477131788752c84025dbf88eb51a2a5e0542e72a238a80258f3c8a8efd"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFChart.RemoveSeries (cognitive 35): HSSFChart.RemoveSeries 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":1346}}}],"partialFingerprints":{"codehealthFindingId/v1":"8751f75aec12393c20d69b2e63e34d7c0c1f5af7491de95c02e4338ec623a5b4"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearRegressionFunction.EvaluateInternal (cognitive 35): LinearRegressionFunction.EvaluateInternal 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":"main/SS/Formula/Functions/LinearRegressionFunction.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e6c6393fd35764c0397a62f6d29c1370dc37732e9f27ae37c4e1e0827e7b564"}},{"ruleId":"D2","level":"warning","message":{"text":"XDDFRunProperties.SetFonts (cognitive 35): XDDFRunProperties.SetFonts 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":"ooxml/XDDF/UserModel/Text/XDDFRunProperties.cs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"802bd69b697dd1a7e80c240df88adf2ee25efcaf411d913cd1097391e05d936c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Font.Write (cognitive 35): CT_Font.Write has cognitive 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":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b2cb5fc676a31bf89203ea6dfbed7f44acf47061c397e5614c851560672b465"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Font.Clone (cognitive 35): CT_Font.Clone has cognitive 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":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a306aa660e8c28d6ad0dc6b3e187ec3e8ab941bc788002bf12c6c613fabc604"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlRun.Parse (cognitive 35): CT_CustomXmlRun.Parse has cognitive complexity 35 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5fa2dcae2d10b4e5a350141c32dcfe3c0c6c1bec317dca80f98f9f271502526"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentRun.Parse (cognitive 35): CT_SdtContentRun.Parse has cognitive complexity 35 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":2246}}}],"partialFingerprints":{"codehealthFindingId/v1":"f84d28a1b0ed44a5d6fe1a5a5517ea2bd3db1f87d6a06ef6fc9659fedfc2f78e"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Tc.Parse (cognitive 35): CT_Tc.Parse has cognitive complexity 35 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3384}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e21f451dfd1037634c69efc7363ad102b04ceb3c03dcb96405b182d5006765b"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFExportToXml.GetComplexTypeNodeFromSchemaChildren (cognitive 34): XSSFExportToXml.GetComplexTypeNodeFromSchemaChildren 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":"ooxml/XSSF/Extractor/XSSFExportToXml.cs"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e9845e0e7cf201f6d77e8b5e6689efea5abda05477ebc4427cef76121ee02c2"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlRun.Write (cognitive 34): CT_CustomXmlRun.Write has cognitive complexity 34 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"989305b4b6ad645d33af0347717547455e1d47b6063e481c7b68b221c0e6957a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Body.Parse (cognitive 34): CT_Body.Parse has cognitive complexity 34 (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":"OpenXmlFormats/Wordprocessing/Document.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a75c73241f5cf3a9272a83d502dd77e4bcc765e906a70c357b3c4f4a87f6a5"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_FtnEdn.Parse (cognitive 34): CT_FtnEdn.Parse has cognitive complexity 34 (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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"7511d295f77ea0c307e658b5caeb40a2dd3969a560e7a5d51b53fb5ccf6fdc71"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentRun.Write (cognitive 34): CT_SdtContentRun.Write has cognitive complexity 34 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":2417}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf66d47024e569b8b9984b40a7d4c82aaa07ec29528f84e09122bb96aace704"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFRecordStream.GetNextRecord (cognitive 33): HSSFRecordStream.GetNextRecord 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":"main/HSSF/EventUserModel/HSSFRecordStream.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5dcf138f61fde7b9b5e0f8772797a3cdcd87d486e07ed47c5a58280360b1df"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalWorkbook.CloneDrawings (cognitive 33): InternalWorkbook.CloneDrawings 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":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ac62574594f81dbbf2a5b9486f06799380e7981d6c23923c5006b979ebbeaba"}},{"ruleId":"D2","level":"warning","message":{"text":"CellFormat.GetApplicableFormatPart (cognitive 33): CellFormat.GetApplicableFormatPart 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":"main/SS/Format/CellFormat.cs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"40d828342e44a69811572d9b0e343db673adda208dcf15c2d529db49af8e8bea"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlConverter.ProcessCell (cognitive 33): ExcelToHtmlConverter.ProcessCell 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"f253970f5de076b26302cc3b442568e8f692a8a21ef6afb7ce6d74382d9c307e"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFRowColShifter.UpdateConditionalFormatting (cognitive 33): XSSFRowColShifter.UpdateConditionalFormatting 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":"ooxml/XSSF/UserModel/Helpers/XSSFRowColShifter.cs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd4e4fdfd9fe16c603a96c1820951e2293ec1859d7774bb9efcc0856d9174dc"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFParagraph.BuildRunsInOrderFromXml (cognitive 33): XWPFParagraph.BuildRunsInOrderFromXml 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":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba6183192387cd36f5532cad74f1925a8b7266642280af74f96b40f03218dd34"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_HdrFtr.Parse (cognitive 33): CT_HdrFtr.Parse has cognitive complexity 33 (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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25c67483fbab48a313a7c933ed51146e2b3b30506c97a914cf05b9f57025f33"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Comment.Parse (cognitive 33): CT_Comment.Parse has cognitive complexity 33 (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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"04172ffd4e063ff5eebf89b6d05b2f1e87df7f76f2e0175abaf0b3330a6e40ac"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Tc.Write (cognitive 33): CT_Tc.Write has cognitive complexity 33 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3554}}}],"partialFingerprints":{"codehealthFindingId/v1":"36e3deffe03adca4bc47a8aa01e383d6aa43d4c88e2d2aa9f788790098b78d91"}},{"ruleId":"D2","level":"warning","message":{"text":"LookupUtils.LookupIndexOfValue (cognitive 32): LookupUtils.LookupIndexOfValue 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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ade4a350ac9170d755c3c019f083bf8dbad6de8422ebeca54284e712c1d657"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSimpleShape.ProcessAutoNumGroup (cognitive 32): XSSFSimpleShape.ProcessAutoNumGroup 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":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a686a9acc1b9a18121e30ca4c777665526aea756d06a20f3b44e49262f48b7f"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFRun._getText (cognitive 32): XWPFRun._getText 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":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"8985a8c25bceda4b798e9e25d8a2c2c28c8bb92c94c19d902dbf51dfb9d96c7a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PivotCacheDefinition.Parse (cognitive 32): CT_PivotCacheDefinition.Parse has cognitive complexity 32 (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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"890c74d0f6cbd9e69887b25dcfd9c83b127d57574f2398002dbf9ea87e61b149"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlRow.Parse (cognitive 32): CT_CustomXmlRow.Parse has cognitive complexity 32 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"eafe73277a88930b4d10a2a4067edc70c51fd52056ff76d124ffe8d19b22b13f"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlBlock.Parse (cognitive 32): CT_CustomXmlBlock.Parse has cognitive complexity 32 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1709}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbf1b12446a8e577c2ea5ea0a12c3689772c4e11e15e88e09ef43b99f820fb31"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlCell.Parse (cognitive 32): CT_CustomXmlCell.Parse has cognitive complexity 32 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":2141}}}],"partialFingerprints":{"codehealthFindingId/v1":"434ea522f52777958c17a035e6b8c3f1f777707b606fab9365e0848ab772c8c7"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_HdrFtr.Write (cognitive 32): CT_HdrFtr.Write has cognitive complexity 32 (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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"041190b10e1017634182451f3c38e770225a7d4c50e8af8dca2bfe2836c4888c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Comment.Write (cognitive 32): CT_Comment.Write has cognitive complexity 32 (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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"b42e3a52862db10cca07e6e24242263d0cff304539d01d587c45a24fce6b96ea"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentBlock.Parse (cognitive 32): CT_SdtContentBlock.Parse has cognitive complexity 32 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b8fc3ed4cce9719e02022f45db9f4b0e18d15abc93cff24cdfb08c329bf8911"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Row.Write (cognitive 32): CT_Row.Write has cognitive complexity 32 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":5723}}}],"partialFingerprints":{"codehealthFindingId/v1":"a920972eab0c9f5275545ff6fc4149af04a472fea8ff5c0231d7ff1b7a02818d"}},{"ruleId":"D2","level":"warning","message":{"text":"NPOIFSFileSystem.GetFreeBlock (cognitive 31): NPOIFSFileSystem.GetFreeBlock 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":"main/POIFS/FileSystem/NPOIFSFileSystem.cs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"e621486b2a78884b221835cd92d257e6e2e55966294fcdad926032cc46afaccb"}},{"ruleId":"D2","level":"warning","message":{"text":"LookupUtils.LookupFirstIndexOfValue (cognitive 31): LookupUtils.LookupFirstIndexOfValue 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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"51e4c012ae540ce00a18a3ff94028d98eb4c8b20fc94f247011fdc73f30633f5"}},{"ruleId":"D2","level":"warning","message":{"text":"LookupUtils.LookupLastIndexOfValue (cognitive 31): LookupUtils.LookupLastIndexOfValue 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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c83611d92457ca136ad622ee197aa02deb70e495c35bef20b3b401429352825"}},{"ruleId":"D2","level":"warning","message":{"text":"HexDump.Dump (cognitive 31): HexDump.Dump 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":"main/Util/HexDump.cs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"f651158340da17aee84da6ed65471c8af7f9e654b5d25f0708c56d52ded4614b"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.RemoveOverwrittenRows (cognitive 31): XSSFSheet.RemoveOverwrittenRows 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":5498}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef03a2e8c147bd1ba043a9862adb6b3efdd74b5129861558d6fc991da10fa72e"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlRow.Write (cognitive 31): CT_CustomXmlRow.Write has cognitive complexity 31 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"893d1dccb85417efb38ec766b63acca1e41034b9ac54519836d203004d8e7e00"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlBlock.Write (cognitive 31): CT_CustomXmlBlock.Write has cognitive complexity 31 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1868}}}],"partialFingerprints":{"codehealthFindingId/v1":"96a1b9dcd46ef156556a9828c6b0c601529c413e3c248fba741cc1b2676d5db5"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CustomXmlCell.Write (cognitive 31): CT_CustomXmlCell.Write has cognitive complexity 31 (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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":2299}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee6caa69be94e536337c60e340d3fb4b442734b2563952e1c20735606dfca443"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentCell.Parse (cognitive 31): CT_SdtContentCell.Parse has cognitive complexity 31 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"be8ce02698ee43eb52fd87595a9924a74e2dd76513ba88dfd4a597bf3b87431a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentBlock.Write (cognitive 31): CT_SdtContentBlock.Write has cognitive complexity 31 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1149}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec50c02ead6132b4ec8bf2f719b0ad87f210e70caade2b33debbfac863267f13"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentRow.Parse (cognitive 31): CT_SdtContentRow.Parse has cognitive complexity 31 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1494}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe474f336e1112dbdc9cea848446b8172e627565ee4cb6cb7150b0a05355970"}},{"ruleId":"D2","level":"warning","message":{"text":"CellNumberFormatter.WriteFraction (cognitive 30): CellNumberFormatter.WriteFraction 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d49f550e32658c507532078b5ea8c7efd07a70ece648a566e23f9cabcaa1742"}},{"ruleId":"D2","level":"warning","message":{"text":"BooleanFunction.Calculate (cognitive 30): BooleanFunction.Calculate 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":"main/SS/Formula/Functions/Boolean/BooleanFunction.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"feb0623027619be315960201a191ba5e44c3bba0e21995e75c3b6c3bf2b626f5"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiOperandNumericFunction.CollectValues (cognitive 30): MultiOperandNumericFunction.CollectValues has cognitive 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":"main/SS/Formula/Functions/MultiOperandNumericFunction.cs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6619feece3e533a4e23878ab3c3ade16084869774b37eaf1013887b79518f1b"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkbookEvaluator.EvaluateAny (cognitive 30): WorkbookEvaluator.EvaluateAny 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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ebfb5761677a1e62aa2e566f3e4e6eaee09cf375e3ef9d20fd71ee9f334c4eb"}},{"ruleId":"D2","level":"warning","message":{"text":"Arrays.DeepToString (cognitive 30): Arrays.DeepToString 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":"main/Util/Arrays.cs"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c89746846b6824ebe14ac9e7fea058b6b8d1379ef94ccb2236a5176ad100bf0"}},{"ruleId":"D2","level":"warning","message":{"text":"MutableBigInteger.divideMagnitude (cognitive 30): MutableBigInteger.divideMagnitude 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":"main/Util/BigInteger.cs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"1459b07a6b9d79bcf4c61b9ea8a7397d5366d859e11b51c1048c57844f51168d"}},{"ruleId":"D2","level":"warning","message":{"text":"EmbeddedExtractor.ExtractAll (cognitive 30): EmbeddedExtractor.ExtractAll 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":"ooxml/XSSF/Extractor/EmbeddedExtractor.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae7604362f9903d5ef2465e7dbe63139f61a4bc40835910d214612241b878ad"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFColumn.CopyColumnFrom (cognitive 30): XSSFColumn.CopyColumnFrom 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":"ooxml/XSSF/UserModel/XSSFColumn.cs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d54f23202e44cab3018652da02ce7a945e475fc285ccbc490345b3f7077031"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFRow.CopyRowFrom (cognitive 30): XSSFRow.CopyRowFrom 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":"ooxml/XSSF/UserModel/XSSFRow.cs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"65c9aae2ceecf67819ec01fb64e73a8bab5168657ac4dfac90b57a2b11b27fc1"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.CopySheetImages (cognitive 30): XSSFSheet.CopySheetImages 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6220}}}],"partialFingerprints":{"codehealthFindingId/v1":"23fe0df1f4f2ec1fd1a54e5835cddef480c30e0f7b2a37fac08b0cc7884be116"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.CopyCell (cognitive 30): XSSFSheet.CopyCell 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6363}}}],"partialFingerprints":{"codehealthFindingId/v1":"daba4cd49717251b5991e480fc8547e1477abb20449b1c64e6dbf61b94a5711f"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFTextParagraph.SetBullet (cognitive 30): XSSFTextParagraph.SetBullet 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":"ooxml/XSSF/UserModel/XSSFTextParagraph.cs"},"region":{"startLine":1063}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6f997758fd427b9f1d7a520181d473288f5ddb2576c1419152daa929fc7a59"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFDocument.OnDocumentRead (cognitive 30): XWPFDocument.OnDocumentRead 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"11a51a7d1a9e188a8bf20a3e75cda806b931529dd57b9d4f5fce485b3481278c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentCell.Write (cognitive 30): CT_SdtContentCell.Write has cognitive complexity 30 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"62fed92f4635c5042b2562837db6e0554a9e4b2fb0f13d897bb008e1f86269b9"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtContentRow.Write (cognitive 30): CT_SdtContentRow.Write has cognitive complexity 30 (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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1645}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c0915227a4989e3d9b60adb87dbad69a696911339257bc6e0680c708be0b986"}},{"ruleId":"D2","level":"warning","message":{"text":"EventRecordFactory.ProcessRecords (cognitive 29): EventRecordFactory.ProcessRecords 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":"main/HSSF/EventModel/EventRecordFactory.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbfdc99e526b42cdbd20eca3434c055d10ad5a4777219dc4ba550a999a4422df"}},{"ruleId":"D2","level":"warning","message":{"text":"ValidationEnum_LIST.IsValidValue (cognitive 29): ValidationEnum_LIST.IsValidValue 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":"main/SS/Formula/DataValidationEvaluator.cs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7bb116b4de9bd1305a337f4d3de9fd0275ab25dd1eafcb9969899ee04f2b9a5"}},{"ruleId":"D2","level":"warning","message":{"text":"EvaluationConditionalFormatRule.CheckValue (cognitive 29): EvaluationConditionalFormatRule.CheckValue 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":"main/SS/Formula/EvaluationConditionalFormatRule.cs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"db4406ee87ff1e83287ad785f79f2cf4bf964f4d4dd2f2f731fff09f0c6deddc"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaRenderer.ToFormulaString (cognitive 29): FormulaRenderer.ToFormulaString 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":"main/SS/Formula/FormulaRenderer.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"851b13d87de674806c3edcba8cf1a891605b3067eec952e5e0f76e3e5ce01c9e"}},{"ruleId":"D2","level":"warning","message":{"text":"CellUtil.CopyCell (cognitive 29): CellUtil.CopyCell 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":"main/SS/Util/CellUtil.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"626ec126f03f726183386142d8a5aee381ab51ff8c637b013f7f69be6e60da63"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFTable.GetCommonXpath (cognitive 29): XSSFTable.GetCommonXpath 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":"ooxml/XSSF/UserModel/XSSFTable.cs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0e3c896d3e070b0a2b82ce4142e598d5e9b4008ac580fab498f91b19297f9c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Stroke.Parse (cognitive 29): CT_Stroke.Parse has cognitive complexity 29 (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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":2598}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e13ab3365fedd218f448f45313ac6350aaf8d4eff3610172d6a82bd266e2586"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RubyContent.Parse (cognitive 29): CT_RubyContent.Parse has cognitive complexity 29 (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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ae7a19afa6b365273d8c5faf0f53d9ecd502ef22f3a33f5cde1582d90c38ef"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TrPr.Write (cognitive 29): CT_TrPr.Write has cognitive complexity 29 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4035}}}],"partialFingerprints":{"codehealthFindingId/v1":"26835c60bdf004c952299c7e31fcfe7f7ec5dfa071d3f545be32648ca90492e2"}},{"ruleId":"D2","level":"warning","message":{"text":"TextListener.ProcessRecord (cognitive 28): TextListener.ProcessRecord 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":"main/HSSF/Extractor/EventBasedExcelExtractor.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"287677878240f92fd0f9f27ccc4f99a528a77dfc2a31c9a7785fa6e02f75133f"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.ShiftRows (cognitive 28): HSSFSheet.ShiftRows 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":1544}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ce9bd0eb5d0a555eccbe29eaa3bdfadf76ca4d63c86ca5da363966af3c6651"}},{"ruleId":"D2","level":"warning","message":{"text":"IdentifierManager.Release (cognitive 28): IdentifierManager.Release 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":"ooxml/Util/IdentifierManager.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"e733b4ae6bfe3fed9a7e587563b369316a52db7ebec17730960b0a53e74efd73"}},{"ruleId":"D2","level":"warning","message":{"text":"XDDFTextBody.RetrieveProperties (cognitive 28): XDDFTextBody.RetrieveProperties has cognitive complexity 28 (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":"ooxml/XDDF/UserModel/Text/XDDFTextBody.cs"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e2f936e765b4b982e23bdf0f81c7d228d777c8b5fe0fccd5bb0326f7464fae"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFWorkbook.OnDocumentRead (cognitive 28): XSSFWorkbook.OnDocumentRead 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":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf334b382b0f2e8e7e525856cc688447f02f39d0dcc5f98b8da092eca44ae1f7"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Style.Parse (cognitive 28): CT_Style.Parse has cognitive complexity 28 (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":"OpenXmlFormats/Wordprocessing/Styles.cs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"6628566097946ba35a1cb60b00e396b35050a7efbd68bd5a3b8d3271e6e07492"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordFactoryInputStream.ReadNextRecord (cognitive 27): RecordFactoryInputStream.ReadNextRecord 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":"main/HSSF/Record/RecordFactoryInputStream.cs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7fa01effae45a1d6ffbc5c9afd725212074840b92ec37bf2d841bc0d782b61"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFShapeFactory.CreateShapeTree (cognitive 27): HSSFShapeFactory.CreateShapeTree 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":"main/HSSF/UserModel/HSSFShapeFactory.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba37187173ec8ded60252115348695671a623665311e5479aef03ca67edd2d6"}},{"ruleId":"D2","level":"warning","message":{"text":"VBAMacroReader.ReadMacros (cognitive 27): VBAMacroReader.ReadMacros 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":"main/POIFS/Macros/VBAMacroReader.cs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"c855c67f9c83b6a9f0bdfbb466307bcf06ea597e16b4df6e6313ef0eed5858f4"}},{"ruleId":"D2","level":"warning","message":{"text":"Indirect.ParseWorkbookAndSheetName (cognitive 27): Indirect.ParseWorkbookAndSheetName 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":"main/SS/Formula/Functions/Indirect.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f726789aab19e1582b55325ee0a17b28569a44b2d2d9989cf3a63aad21d3cf"}},{"ruleId":"D2","level":"warning","message":{"text":"PercentRank.calculateRank (cognitive 27): PercentRank.calculateRank 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":"main/SS/Formula/Functions/PercentRank.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a941bb62c65bf0806da2e57aeb97c1b302090fc88c6b71d91aff89244343bd"}},{"ruleId":"D2","level":"warning","message":{"text":"IdentifierManager.Reserve (cognitive 27): IdentifierManager.Reserve 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":"ooxml/Util/IdentifierManager.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8bb4c1758c48d7f0920674900714b85aac222405ad24dcc54b7d6d369cfc819"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.Write (cognitive 27): XSSFSheet.Write 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":1669}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaebb27a8e8b463d0c2be9be01eeb4da79738709fac59a57f173770825dd6d86"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSimpleShape.ApplyAttributes (cognitive 27): XSSFSimpleShape.ApplyAttributes 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":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa841f9a5cd5520149bbc06961cdfa574b0f4198429e09b3c2f20840538b273"}},{"ruleId":"D2","level":"warning","message":{"text":"Section.Section.ctor (cognitive 26): Section.Section.ctor 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":"main/HPSF/Section.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f010998131931ff6fb90ec692b58caf6b2beea3e7cac93d804f5baf7897c828"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalChart.InternalChart.ctor (cognitive 26): InternalChart.InternalChart.ctor 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, 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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"9915e44efc667caab41b497d2caa002c55dcc411ab567585e55292fdd1646164"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartRecordAggregate.WriteEndBlock (cognitive 26): ChartRecordAggregate.WriteEndBlock has cognitive 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":"main/HSSF/Record/Aggregates/Chart/ChartRecordAggregate.cs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"d176fc4b83c8340ecf23ebc273d2d300fccb4d2b51ac5a942282ca0549eca54d"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordInputStream.ReadStringCommon (cognitive 26): RecordInputStream.ReadStringCommon 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":"main/HSSF/Record/RecordInputStream.cs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"776e54040b025a49e907ae829c42db973869e09bf92df03a45024023042e17b9"}},{"ruleId":"D2","level":"warning","message":{"text":"Complex.Evaluate (cognitive 26): Complex.Evaluate 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":"main/SS/Formula/Functions/Complex.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"66872a5842df8d05b0e78ce16786b7788813361e419b4829a3effc6415bba21a"}},{"ruleId":"D2","level":"warning","message":{"text":"DStarRunner.FullFillsConditions (cognitive 26): DStarRunner.FullFillsConditions 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":"main/SS/Formula/Functions/DStarRunner.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb3234cf8eb5f1ad895509899ac20e55c70212dbd63e70f33df54b8f4b5dc05"}},{"ruleId":"D2","level":"warning","message":{"text":"DataFormatter.GetFormat (cognitive 26): DataFormatter.GetFormat 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"256e694ca1917e14c2f9923bf41f293a121d38b0263c1ffad4e53dc8f893173a"}},{"ruleId":"D2","level":"warning","message":{"text":"SheetUtil.CopyRow (cognitive 26): SheetUtil.CopyRow 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e61775bce5140cb6adeb389b97fceb8ba71b885b0643f3e1f0bb8b91afc75c3"}},{"ruleId":"D2","level":"warning","message":{"text":"BigInteger.ShiftRight (cognitive 26): BigInteger.ShiftRight 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":"main/Util/BigInteger.cs"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd7f08b555b3131b3149bcf2cdeec202f5d87c0c888e00915fdecba6ea01e4d"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFRichTextString.ToCTFont (cognitive 26): XSSFRichTextString.ToCTFont 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":"ooxml/XSSF/UserModel/XSSFRichTextString.cs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8283da184ccdbc3ad5089b200573a6f7a44baa85c860342c077cbaacf3fb18"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFSettings.SetEnforcementEditValue (cognitive 26): XWPFSettings.SetEnforcementEditValue 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":"ooxml/XWPF/Usermodel/XWPFSettings.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc11901e49dcc50b30f8ef45766878d6700055c7c1deb168657cc94b579859c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SectPr.Write (cognitive 26): CT_SectPr.Write has cognitive complexity 26 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3188}}}],"partialFingerprints":{"codehealthFindingId/v1":"0075864b2c749cb20f13543ca760c01e2193943feaf03b6eb6286941503a04c6"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Style.Write (cognitive 26): CT_Style.Write has cognitive complexity 26 (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":"OpenXmlFormats/Wordprocessing/Styles.cs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cae2f89221f9ce7c2501f361e28f34a3ef03d26e237de9d97b2693a0eba8f4f"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TrPrBase.Write (cognitive 26): CT_TrPrBase.Write has cognitive complexity 26 (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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3068}}}],"partialFingerprints":{"codehealthFindingId/v1":"112a3897ba860dda7a671fccd3ae3f86ff1a416d4328890620a3c51041feac21"}},{"ruleId":"D2","level":"warning","message":{"text":"EntryUtils.AreDirectoriesIdentical (cognitive 25): EntryUtils.AreDirectoriesIdentical 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":"main/POIFS/FileSystem/EntryUtils.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"713185e3abe2b628af02c38be7baae1c2482e7c62a802722d9cd726b8c26db10"}},{"ruleId":"D2","level":"warning","message":{"text":"XLookupFunction.evaluate (cognitive 25): XLookupFunction.evaluate 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":"main/SS/Formula/Atp/XLookupFunction.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5d577215ca1a920f9a08cf64a177da9bfb03eaccf4383974430796ec7544b9c"}},{"ruleId":"D2","level":"warning","message":{"text":"DateUtil.GetExcelDate (cognitive 25): DateUtil.GetExcelDate 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":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"864517543290ece9f8d22cc4b0edcb4c0ffcc30e6f2f14a3b5b885628b942ff2"}},{"ruleId":"D2","level":"warning","message":{"text":"LZWDecompresser.decompress (cognitive 25): LZWDecompresser.decompress 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":"main/Util/LZWDecompresser.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ed1d3c3bf700fbedf61bbbedad3664f9e12cf13730999e0862e51fac306946a"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFRichTextString.SetRunAttributes (cognitive 25): XSSFRichTextString.SetRunAttributes 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":"ooxml/XSSF/UserModel/XSSFRichTextString.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"f046104d706cb5e9ae5623932394db7e54b66006d3ecc04c68aa8058662a6648"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Shapetype.Parse (cognitive 25): CT_Shapetype.Parse has cognitive complexity 25 (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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":3762}}}],"partialFingerprints":{"codehealthFindingId/v1":"b469026057f173a38011c0699cc42541d4e016be99dc28d7ce9ebdad93509ebf"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SectPr.Parse (cognitive 25): CT_SectPr.Parse has cognitive complexity 25 (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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3125}}}],"partialFingerprints":{"codehealthFindingId/v1":"f50dd7c37b2136be0917c902f47b6a77cf2fe9d5273a94fa36ab63e79d539dc9"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalWorkbook.Serialize (cognitive 24): InternalWorkbook.Serialize 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":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c9e95dc65c5774fbce293e2a7b28c8813c8615051cf27bdd73e0bea1f3ade6e"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.recomputeFirstAndLastRowsForRowShift (cognitive 24): HSSFSheet.recomputeFirstAndLastRowsForRowShift 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":1692}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fce06cf30c1e35d0c813eeaf9e9d120384cdb5f24b393ced35a20085dd55eab"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.SetRepeatingRowsAndColumns (cognitive 24): HSSFSheet.SetRepeatingRowsAndColumns 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":2826}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0083e12bb0358eed5ac2c3da258be135115a9c5b65f0d2e0661e1c36e3c4a2c"}},{"ruleId":"D2","level":"warning","message":{"text":"DocumentFactoryHelper.ScanForPassword (cognitive 24): DocumentFactoryHelper.ScanForPassword 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":"main/POIFS/FileSystem/DocumentFactoryHelper.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"076df841eeb33099429091b7f5389f0323d4aa2fd9ecb1bcedbc517174d3a534"}},{"ruleId":"D2","level":"warning","message":{"text":"RelationalOperationEval.DoCompare (cognitive 24): RelationalOperationEval.DoCompare 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":"main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"df79afc7c58c42df69ab1d0709279304f4b0ba7acdc504b68fa7f20d4d02af33"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseSheetName (cognitive 24): FormulaParser.ParseSheetName 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1435}}}],"partialFingerprints":{"codehealthFindingId/v1":"db29873d81bfbd190fbaa8886c44e0df0d8bd83a822beaf80b711af36c41f0eb"}},{"ruleId":"D2","level":"warning","message":{"text":"Baseifs.AggregateMatchingCells (cognitive 24): Baseifs.AggregateMatchingCells 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":"main/SS/Formula/Functions/Baseifs.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"64ed5abd3d531fd34d592a8bdb5f0e2d7f956780438a80ee1a59dce06b9d4802"}},{"ruleId":"D2","level":"warning","message":{"text":"NCellRange.ForEachCell (cognitive 24): NCellRange.ForEachCell 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":"main/SS/UserModel/NCellRange.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"e581858f732eee7e8eb596f89b1f664f7b8e64e6d76b9ac4acf0fd76d586ba7e"}},{"ruleId":"D2","level":"warning","message":{"text":"Properties.LoadConvert (cognitive 24): Properties.LoadConvert 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":"main/Util/Collections/Properties.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4fe9d7f98d1e75047c7b51d48b0a9e42dc96121eea4257f4e2dc06b356455d4"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlConverter.ProcessDocumentInformation (cognitive 24): ExcelToHtmlConverter.ProcessDocumentInformation 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bca0d5843deb6b6699eda9589aec727860c21633dc2b25c4e020fdcbc062cb4"}},{"ruleId":"D2","level":"warning","message":{"text":"StylesTable.WriteTo (cognitive 24): StylesTable.WriteTo 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":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62922b4e127d6b85fb5c3e1a5695e80a43b2cf95614ecaf6ba9879183e74a6c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Shape.Parse (cognitive 24): CT_Shape.Parse 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1e45df65992fc1fc5384ef421404d8e7581dc05a8f808fbf00530cdee537eb5"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SdtPr.Parse (cognitive 24): CT_SdtPr.Parse 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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1832}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd40a258ebce132e6f9a63c1df297471cbea4b660fb6bc268f240f754c58f450"}},{"ruleId":"D2","level":"warning","message":{"text":"HeaderFooter.SplitParts (cognitive 23): HeaderFooter.SplitParts 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":"main/HSSF/UserModel/HeaderFooter.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"e54b1de03ba91f5ecc6a45292800b8ba0a51fc04ddac88fe034d50174dd395b7"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.CopyTo (cognitive 23): HSSFSheet.CopyTo 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":3074}}}],"partialFingerprints":{"codehealthFindingId/v1":"42988b4e7309fffdb7c29921d55fd26e560435ec65578550f45fc3942cb52e58"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseSimpleRangePart (cognitive 23): FormulaParser.ParseSimpleRangePart 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f3cec23f3f9178aedb9006ca0bd57f2c74960c85a4766cb6dd98e105716578"}},{"ruleId":"D2","level":"warning","message":{"text":"Match.FindIndexOfValue (cognitive 23): Match.FindIndexOfValue 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":"main/SS/Formula/Functions/Match.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda3b4ccc4f8d616a76c6e248540e1ba8626d208ee425de713e91f28d2157054"}},{"ruleId":"D2","level":"warning","message":{"text":"OperandClassTransformer.TransformFunctionNode (cognitive 23): OperandClassTransformer.TransformFunctionNode has cognitive 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. 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":"main/SS/Formula/OperandClassTransformer.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbca167d4be45ad01283c64ebdf703dc3f73efc4e427788f0e58ed696c81ada5"}},{"ruleId":"D2","level":"warning","message":{"text":"DataFormatter.CreateFormat (cognitive 23): DataFormatter.CreateFormat 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac4b81e114f0ad01f0e741210a0eacf508dd8d13329a8cd606ed8781c1b0d28b"}},{"ruleId":"D2","level":"warning","message":{"text":"StylesTable.ReadFrom (cognitive 23): StylesTable.ReadFrom 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":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"72299f9beaef2431f8bed41f2551f8a715814e726fb6f29ec0b250a820ad7ea8"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFTextRun.SetFontFamily (cognitive 23): XSSFTextRun.SetFontFamily 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":"ooxml/XSSF/UserModel/XSSFTextRun.cs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4a1ddcd305735e4b5716533ff5f9d38e72793389839d891a38a4a638204ea5"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFTableCell.AppendBodyElementText (cognitive 23): XWPFTableCell.AppendBodyElementText 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":"ooxml/XWPF/Usermodel/XWPFTableCell.cs"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ac5a0e9d2e5f891530c797ca27b6bbca25c9457a45a9c77c6c70cb5996c003"}},{"ruleId":"D2","level":"warning","message":{"text":"EncryptionDocument.WriteKeyEncryptorChild (cognitive 23): EncryptionDocument.WriteKeyEncryptorChild 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":"OpenXmlFormats/Encryption/EncryptionDocument.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"6352b1b22b991288985bb6377acbe5206f1373f788c10b12b3c13556c2117c53"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SharedItems.Parse (cognitive 23): CT_SharedItems.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":1768}}}],"partialFingerprints":{"codehealthFindingId/v1":"eab67db73246a5ef3eaa5f4969dcdfa4937db2a3761b8549dd97033feb6bf17f"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SharedItems.Write (cognitive 23): CT_SharedItems.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":1840}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddee7e9bfc10933e2b96f49ddbf4669365b5b72debebc4e1d265af641925c88b"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Table.Parse (cognitive 23): CT_Table.Parse 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":"OpenXmlFormats/Spreadsheet/Sheet/CT_Table.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"96007bf11287c3534e1b7f33d6a581a7da74916a3a5b79fba39134caf8b48c65"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Dxfs.Parse (cognitive 23): CT_Dxfs.Parse 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":"OpenXmlFormats/Spreadsheet/Styles/CT_Dxfs.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5f4ab61692611f2901655b89d376401bfed2f00046f157f2aa1fad2c0b1409"}},{"ruleId":"D2","level":"warning","message":{"text":"POIFSReader.ProcessProperties (cognitive 22): POIFSReader.ProcessProperties 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":"main/POIFS/EventFileSystem/POIFSReader.cs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"4251afa1ed239299ef425c5552b51b783d5feddcec0d3032d4bdd02b704d5129"}},{"ruleId":"D2","level":"warning","message":{"text":"CellFormatPart.formatType (cognitive 22): CellFormatPart.formatType 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":"main/SS/Format/CellFormatPart.cs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac0b5bc83df6b3b4314147af1171a0ffb2edf8d2853baa73c18f65673363554d"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplacingInputStream.Read (cognitive 22): ReplacingInputStream.Read has cognitive complexity 22 (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":"main/Util/ReplacingInputStream.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"b387d311e8c96b6c3453352388060c856bd2b4f2f9dd8836588df224158000de"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlConverter.BuildStyle_Font (cognitive 22): ExcelToHtmlConverter.BuildStyle_Font 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ea13c889f75c9a92d217f7dacbdb9480623be789fae4a721eba36578ef7b10"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFRowColShifter.UpdateColumnFormulas (cognitive 22): XSSFRowColShifter.UpdateColumnFormulas 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":"ooxml/XSSF/UserModel/Helpers/XSSFRowColShifter.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"48ebc8c4346fd96f7ae18a188aa2d0372dd9c43e16609f2aaa2b56376e0749b0"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.CopyRow (cognitive 22): XSSFSheet.CopyRow 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6300}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2260e309005ff5a240a0ce4c8fe9308bd44e4f7e44a84d972e144f85a5c3482"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentTypeManager.RemoveContentType (cognitive 22): ContentTypeManager.RemoveContentType 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":"openxml4Net/OPC/Internal/ContentTypeManager.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebdfb1e9258e69524b221494db5081408b70911163804267927b240b20870d58"}},{"ruleId":"D2","level":"warning","message":{"text":"ZipPackage.SaveImpl (cognitive 22): ZipPackage.SaveImpl 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":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac520d7b9f3df3a6cce7782f3592332c518c5d548005fe1ee2530ddbe02b571"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_BubbleSer.Write (cognitive 22): CT_BubbleSer.Write 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":"OpenXmlFormats/Drawing/Chart/BubbleChart.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"29808b94f10da995df3ccda8cc2a3230438abda9cccd15e38ae0b9264acf204a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Workbook.Parse (cognitive 22): CT_Workbook.Parse 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":"OpenXmlFormats/Spreadsheet/Workbook/CT_Workbook.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"6db56177d21377b046fd8e6c6bb2278b4ea3d9354348e94e3922e79f0f15e095"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SectPrBase.Parse (cognitive 22): CT_SectPrBase.Parse 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2240}}}],"partialFingerprints":{"codehealthFindingId/v1":"19ce0b40adfebe84fa8539b5eff14b8273d8ad201fdc0366fbce4a20872eb2c4"}},{"ruleId":"D2","level":"warning","message":{"text":"Property.ToString (cognitive 21): Property.ToString 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, 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":"main/HPSF/Property.cs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"21841a415da355367e99a6747180b87cb48b5fb4e60bb87d260350daa7b6731f"}},{"ruleId":"D2","level":"warning","message":{"text":"CFRecordsAggregate.UpdateFormulasAfterCellShift (cognitive 21): CFRecordsAggregate.UpdateFormulasAfterCellShift 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":"main/HSSF/Record/Aggregates/CFRecordsAggregate.cs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69c41e97872268976df56241642e00371ea7bffc7cf6c7b7588b72a5fa455ee"}},{"ruleId":"D2","level":"warning","message":{"text":"FontFormatting.ToString (cognitive 21): FontFormatting.ToString 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, 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":"main/HSSF/Record/CF/FontFormatting.cs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1620dd093d191363f2f7e6252b4adc5cb49e87480e088acb4d8d238d9fb7f9c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtendedFormatRecord.Equals (cognitive 21): ExtendedFormatRecord.Equals 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":"main/HSSF/Record/ExtendedFormatRecord.cs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a7f55464191ecd044e772b827170d19731a444b0f0d9d8b6dce64e1f32afd4"}},{"ruleId":"D2","level":"warning","message":{"text":"HyperlinkRecord.HyperlinkRecord.ctor (cognitive 21): HyperlinkRecord.HyperlinkRecord.ctor 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":"main/HSSF/Record/HyperlinkRecord.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd390b7d6f4586924215d655c929dd560f458d516d35de921d2b468791c214d2"}},{"ruleId":"D2","level":"warning","message":{"text":"TextJoinFunction.Evaluate (cognitive 21): TextJoinFunction.Evaluate 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":"main/SS/Formula/Atp/TextJoinFunction.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b69aa6714043f6bac9d19f950c02b61bdbb99a68ecbb1762682369539cdfe65"}},{"ruleId":"D2","level":"warning","message":{"text":"RelationalOperationEval.EvaluateArray (cognitive 21): RelationalOperationEval.EvaluateArray 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":"main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65b448a2aa8c12d5de05bb80545cbad753c7618535e2d0572ac60df9044178f"}},{"ruleId":"D2","level":"warning","message":{"text":"ArrayFunction._evaluateOneArrayArg (cognitive 21): ArrayFunction._evaluateOneArrayArg 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":"main/SS/Formula/Functions/ArrayFunction.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeef9cf1e26583034fddc8ad3ebf3618c2be6847905b6db5513b8950f6120337"}},{"ruleId":"D2","level":"warning","message":{"text":"DStarRunner.Evaluate (cognitive 21): DStarRunner.Evaluate 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":"main/SS/Formula/Functions/DStarRunner.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5dcc92aa8f708eceda2a60b68cfc7f5df870f653fd25a2b4f1885a684fdca56"}},{"ruleId":"D2","level":"warning","message":{"text":"DateUtil.IsADateFormat (cognitive 21): DateUtil.IsADateFormat 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":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87bc816c3a4634149ae96acabe33759e3ff5e679093734146be9583a523386b"}},{"ruleId":"D2","level":"warning","message":{"text":"BigInteger.BigInteger.ctor (cognitive 21): BigInteger.BigInteger.ctor 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":"main/Util/BigInteger.cs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"896021a8db73bcb0bffc07cb0883cba64fe574599f39996a6c2bc3bfdbc5da4a"}},{"ruleId":"D2","level":"warning","message":{"text":"POIXMLDocumentPart.Read (cognitive 21): POIXMLDocumentPart.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":"ooxml/POIXMLDocumentPart.cs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea43383176452f318e9bc822b1538888a525878b4cf7c76348ce85137bc5f70"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFCellStyle.CloneStyleFrom (cognitive 21): XSSFCellStyle.CloneStyleFrom 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":"ooxml/XSSF/UserModel/XSSFCellStyle.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"44edb61c9b3d06c964fc47c6ca919eb5c988ee23dfc367539a65c52098da38db"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFRun.XWPFRun.ctor (cognitive 21): XWPFRun.XWPFRun.ctor has cognitive complexity 21 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d432253d0385550401f70f4bead444edb84ba22ab752f0f320613b13ca59be"}},{"ruleId":"D2","level":"warning","message":{"text":"PackagePropertiesUnmarshaller.CheckElementForOPCCompliance (cognitive 21): PackagePropertiesUnmarshaller.CheckElementForOPCCompliance 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":"openxml4Net/OPC/Internal/Unmarshallers/PackagePropertiesUnmarshaller.cs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"704549530d3301ca976701928a27cd7c9ee10147186e23c9329ec0581c829c2f"}},{"ruleId":"D2","level":"warning","message":{"text":"PackagePartName.Compare (cognitive 21): PackagePartName.Compare 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":"openxml4Net/OPC/PackagePartName.cs"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"e335a3d1db2c2afe9678458b2513cf6405edd7a5c0edd498301ec750d5d49ed7"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ScatterSer.Write (cognitive 21): CT_ScatterSer.Write 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":"OpenXmlFormats/Drawing/Chart/ScatterChart.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa04052bbe23d9a97c55206266270447db2539c1df507ac0d369961ad57f1e1a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Workbook.Write (cognitive 21): CT_Workbook.Write 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":"OpenXmlFormats/Spreadsheet/Workbook/CT_Workbook.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"92db345fad1cf9368042578e2d1885f26a2413034c89f812ec49aa647efc1e01"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Shape.Write (cognitive 21): CT_Shape.Write 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce9cbcff3aa0cb81aadd0ec84a4c198ae748955428ed4c378a01568dfb8e8392"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TblPr.Parse (cognitive 21): CT_TblPr.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2782}}}],"partialFingerprints":{"codehealthFindingId/v1":"bacb5a31a23e6f76859f77eaf38d70fb8bbc40de8cfeada5fd058b994bbaa0f1"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalSheet.VisitContainedRecords (cognitive 20): InternalSheet.VisitContainedRecords 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":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":2180}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cdc5313e9ec10aed0f039bc15eb05ff1f45d65b1843b743ef0045251ccbb1c9"}},{"ruleId":"D2","level":"warning","message":{"text":"EmbeddedObjectRefSubRecord.EmbeddedObjectRefSubRecord.ctor (cognitive 20): EmbeddedObjectRefSubRecord.EmbeddedObjectRefSubRecord.ctor 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":"main/HSSF/Record/EmbeddedObjectRefSubRecord.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e6d64f3da140d1a67f4eedd33deba52b00b1f1055abaa354fccceaf17ec022"}},{"ruleId":"D2","level":"warning","message":{"text":"HyperlinkRecord.Serialize (cognitive 20): HyperlinkRecord.Serialize 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":"main/HSSF/Record/HyperlinkRecord.cs"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8d74f39828e16cf61163eb1d044336c193178ab0d70900fb90763e64fa4770"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.GetSheetImageIds (cognitive 20): HSSFSheet.GetSheetImageIds 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":3184}}}],"partialFingerprints":{"codehealthFindingId/v1":"aab3555f4020c7d6394b1ef60008aa87bed3c9d240f3e5e6b5e81bce21e823d8"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.ApplyEscherRemap (cognitive 20): HSSFSheet.ApplyEscherRemap 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":3214}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c70db5cc60a8cbf90511b2e47567165f7574bd9a33658525e4da4f9a9c6efb"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.CopyRow (cognitive 20): HSSFSheet.CopyRow 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":3270}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad85cebe4de1b81ba5794fab21bd1a887fe52c501167d65dc928f939a21952b"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaShifter.AdjustPtgDueToRowMove (cognitive 20): FormulaShifter.AdjustPtgDueToRowMove 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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7f0b89ce70374391666e2e2a554e44866ba9f4ac14fff0e00c1e393a55bdcd"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaShifter.AdjustPtgDueToColumnMove (cognitive 20): FormulaShifter.AdjustPtgDueToColumnMove 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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"b409b754622e62b59b1b92df932a16d27f086e68102ff6209a92cd92347c3737"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkbookEvaluator.GetEvalForPtg (cognitive 20): WorkbookEvaluator.GetEvalForPtg 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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"2118474248a34045ed1eeda269bdde1db8285d71473d4fcf9e6ec94fbdf3dcd9"}},{"ruleId":"D2","level":"warning","message":{"text":"AreaReference.SeparateAreaRefs (cognitive 20): AreaReference.SeparateAreaRefs 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":"main/SS/Util/AreaReference.cs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"238e5382d49cf208a3d1a6473bf36380b6d4f50700b62c14bdd8cce35d289020"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageUtils.SetPreferredSize (cognitive 20): ImageUtils.SetPreferredSize has cognitive complexity 20 (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":"main/SS/Util/ImageUtils.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b129bb3ba56e8b951da79e799090259a460a1241add85980fb50ac47840f29"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlConverter.BuildStyle_Border (cognitive 20): ExcelToHtmlConverter.BuildStyle_Border 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e236e754c5a7faacd3b0827fc58df2da7e52f69802d2772d965bbad2530b6a7"}},{"ruleId":"D2","level":"warning","message":{"text":"SharedStringsTable.ParseRPrChild (cognitive 20): SharedStringsTable.ParseRPrChild has cognitive complexity 20 (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":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e7cce057475a301d8962e2c9d8eac28aeb515bc082c68fd48b826728a61d59"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_AreaSer.Write (cognitive 20): CT_AreaSer.Write 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":"OpenXmlFormats/Drawing/Chart/AreaChart.cs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ebd99c5c5b56741004863a2dde34bb804addcf3cc1aa03d38e8ae7966b79b21"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_BarSer.Write (cognitive 20): CT_BarSer.Write 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":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b4df95a8f75325ab38e3219bdcaa34f3a5969ea3a3d47d32a9741fdef09828a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CacheHierarchy.Parse (cognitive 20): CT_CacheHierarchy.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":6363}}}],"partialFingerprints":{"codehealthFindingId/v1":"49dd223233c9725d7d6ce6e69d4aa21dca97ce9533bc9b40093cec0dd1259aae"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TblPrBase.Parse (cognitive 20): CT_TblPrBase.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc04f5bd792b527c2e0045c1c40e4de78f3887f4bb1f237070e10c13e06d5d69"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TcPr.Parse (cognitive 20): CT_TcPr.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4746}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22b7a4c2bd18e54dc5720e00ff54feb4a2b440b05abd21d78b9f099c87a4e9c"}},{"ruleId":"D2","level":"warning","message":{"text":"EscherPropertyFactory.CreateProperties (cognitive 19): EscherPropertyFactory.CreateProperties 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":"main/DDF/EscherPropertyFactory.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"56bc808cad9fe02de7ccd768e7e3b3246bf9819dcb8f44db49a70ee02ef4c6a2"}},{"ruleId":"D2","level":"warning","message":{"text":"EscherAggregate.CreateAggregate (cognitive 19): EscherAggregate.CreateAggregate 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":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"231d21e9c32ff69b96d8e97eee70d3e19f07f70b638c9c7a6d0391085cc00231"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.GetRepeatingRowsOrColums (cognitive 19): HSSFSheet.GetRepeatingRowsOrColums 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":2914}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2839c14ee1f02f5a6f650c840a883d17dbfb8fdcd06d61bcebd6953969ceadb"}},{"ruleId":"D2","level":"warning","message":{"text":"DocumentBlock.Convert (cognitive 19): DocumentBlock.Convert 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":"main/POIFS/Storage/DocumentBlock.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"d68ec934aee262c75b4b3750eba4d6f359d9673a6bb2d41554eb2086a09992f1"}},{"ruleId":"D2","level":"warning","message":{"text":"CellFormatPart.ParseFormat (cognitive 19): CellFormatPart.ParseFormat 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":"main/SS/Format/CellFormatPart.cs"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee5e6a051916db0da5088c42d51f70b14bb89c25026a9575e157b22676a0e678"}},{"ruleId":"D2","level":"warning","message":{"text":"CellNumberFormatter.interpretIntegerCommas (cognitive 19): CellNumberFormatter.interpretIntegerCommas 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8ab2177fa04279461693a35f7f55eddaad8720da8dd5e0c161c803ea64343d"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.ParseErrorLiteral (cognitive 19): FormulaParser.ParseErrorLiteral has cognitive complexity 19 (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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":2117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8257a72ec2c4311e1346eec19ca9d4b26898bc0e65b82915433c7ea26b5a6ecd"}},{"ruleId":"D2","level":"warning","message":{"text":"BaseNumberUtils.ConvertToDecimal (cognitive 19): BaseNumberUtils.ConvertToDecimal 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":"main/SS/Formula/Functions/BaseNumberUtils.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e21b1a76853aff288976437acd513c06701d3f01a80e93ff526830decbd0dc20"}},{"ruleId":"D2","level":"warning","message":{"text":"CountUtils.CountMatchingCellsInArea (cognitive 19): CountUtils.CountMatchingCellsInArea 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":"main/SS/Formula/Functions/CountUtils.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"791477eade4d50f26e5c15fa0326fa996cedabd22209def195fc1efc36c9b02b"}},{"ruleId":"D2","level":"warning","message":{"text":"OperandClassTransformer.TransformNode (cognitive 19): OperandClassTransformer.TransformNode 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":"main/SS/Formula/OperandClassTransformer.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b779a58a57a7241ddc1c8bb55c6703716dacca7920f4cecc8923df457a65ff"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkbookEvaluator.AdjustRegionRelativeReference (cognitive 19): WorkbookEvaluator.AdjustRegionRelativeReference 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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"1923c24f45810effcc6ad33d22ea54137bae99ad37c6ef9a24bbcce49de83900"}},{"ruleId":"D2","level":"warning","message":{"text":"CellReferenceParser.TryParse (cognitive 19): CellReferenceParser.TryParse 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":"main/SS/Util/CellReferenceParser.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b499860ad010d0cec02d75cf7c26fb1d7140e9f823f3c67dbb55f880df862a"}},{"ruleId":"D2","level":"warning","message":{"text":"Arrays.DeepEquals0 (cognitive 19): Arrays.DeepEquals0 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":"main/Util/Arrays.cs"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"44204cda76ab23457d5cfb3d47785baa08817da5b75e0f50b9188cf2b3308a06"}},{"ruleId":"D2","level":"warning","message":{"text":"MutableBigInteger.binaryGCD (cognitive 19): MutableBigInteger.binaryGCD 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":"main/Util/BigInteger.cs"},"region":{"startLine":2983}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea565dfb466b1a77a8e312ed2f33f9bac76dc17083270e978eea8799f16a8a9"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.CopyRows (cognitive 19): XSSFSheet.CopyRows 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":3216}}}],"partialFingerprints":{"codehealthFindingId/v1":"611e7377682c409f771b4baeed28d7227b9a9d3ef44d15991036d9cd0153e075"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.GetRepeatingRowsOrColums (cognitive 19): XSSFSheet.GetRepeatingRowsOrColums 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6093}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf16837f0eea2c52a25617ee12021f5946eebb1bc10e0becf113b3fc9f8ef595"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.SetRepeatingRowsAndColumns (cognitive 19): XSSFSheet.SetRepeatingRowsAndColumns 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6145}}}],"partialFingerprints":{"codehealthFindingId/v1":"556ff110fa8a90a1b72a1a8902695805f0126438d83690c9f032cf4dcb35b085"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFWorkbook.CloneSheet (cognitive 19): XSSFWorkbook.CloneSheet 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":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"605141c4cc64a93cd2366886cbe96a17b7c5dd8bcc1538f2c3a708d9c0f7f79a"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFWordExtractor.AppendParagraphText (cognitive 19): XWPFWordExtractor.AppendParagraphText 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":"ooxml/XWPF/Extractor/XWPFWordExtractor.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd363145b60ac9865e5489c65e5f776419f3f9f46c8676e26891ff3bf9db302"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFParagraph.GetNumStartOverride (cognitive 19): XWPFParagraph.GetNumStartOverride 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":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"00e10735b1312dafc228a62ca762e5bd942c88a33bd78c99c992e8049c999357"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFParagraph.RemoveRun (cognitive 19): XWPFParagraph.RemoveRun 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":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":1613}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e6520536d6269cec04c058b8057a98bbd6ebc8ab7fadc9a58dd4619e3a29955"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFPictureData.Equals (cognitive 19): XWPFPictureData.Equals 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":"ooxml/XWPF/Usermodel/XWPFPictureData.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"f42ade90938b581de4aee43ea080233d445d31cac5a596d734171ea7c9ce5b9e"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_LineSer.Write (cognitive 19): CT_LineSer.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":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"a329636f3429502b9a9c7ad769f7e3d64bc6e4ea63e8e6f40faa2e3eeab00148"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_OfPieChart.Write (cognitive 19): CT_OfPieChart.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":"OpenXmlFormats/Drawing/Chart/PieChart.cs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b537fc43b727dae1c90b8982c62144f296bc671ff3fcf85d73732e31261d26"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ShapeProperties.Parse (cognitive 19): CT_ShapeProperties.Parse 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":"OpenXmlFormats/Drawing/ShapeProperties.cs"},"region":{"startLine":2086}}}],"partialFingerprints":{"codehealthFindingId/v1":"301455e9ab074c7b06ef19899f7e6ba0906b1e93299fb31a4c8bb20015603535"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ShapeProperties.Parse (cognitive 19): CT_ShapeProperties.Parse 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":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"669a811cf07a6e82e823ff3c7d8c8431ef4db0eedefdefed86247173ae96c3e5"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_SectPrBase.Write (cognitive 19): CT_SectPrBase.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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2295}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a362983204dad7bd1f7dc947011cf0dfe8465511e6088d1125d793843e8a382"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_MailMerge.Parse (cognitive 19): CT_MailMerge.Parse 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":2964}}}],"partialFingerprints":{"codehealthFindingId/v1":"179d912580c30a2bf09870ce430568e8a69b0c918620cf72704c84d5c072a3d2"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TcPrInner.Parse (cognitive 19): CT_TcPrInner.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4205}}}],"partialFingerprints":{"codehealthFindingId/v1":"299ba6651b1b0262a65743d1d5081e2212064338795076adff18d3f452631a83"}},{"ruleId":"D2","level":"warning","message":{"text":"Property.ReadDictionary (cognitive 18): Property.ReadDictionary 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":"main/HPSF/Property.cs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"b174948d19062fd21bb72cbfbfe9772eb74162d4c173c1d7d9c6280a551023c2"}},{"ruleId":"D2","level":"warning","message":{"text":"Property.Equals (cognitive 18): Property.Equals 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":"main/HPSF/Property.cs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"384ad4e0a51d5fab64109a702061539aef6147510be3d15ac05d4706e3804443"}},{"ruleId":"D2","level":"warning","message":{"text":"ContinuableRecordOutput.WriteCharacterData (cognitive 18): ContinuableRecordOutput.WriteCharacterData 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":"main/HSSF/Record/Cont/ContinuableRecordOutput.cs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1dbe529a611c2c7da9b1935f1336214045ca50793870af3bbd168b3921ea23"}},{"ruleId":"D2","level":"warning","message":{"text":"EmbeddedObjectRefSubRecord.Serialize (cognitive 18): EmbeddedObjectRefSubRecord.Serialize 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":"main/HSSF/Record/EmbeddedObjectRefSubRecord.cs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f4249c2de42afa096be74cc09af9b7079d032040888b4f3536a92f73a33362"}},{"ruleId":"D2","level":"warning","message":{"text":"DatePartHandler.HandlePart (cognitive 18): DatePartHandler.HandlePart has cognitive complexity 18 (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":"main/SS/Format/CellDateFormatter.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a6dfc5cbebe5812355fb17e88b7f81a7b986a4a6626609d00e930d7b8a2fa6"}},{"ruleId":"D2","level":"warning","message":{"text":"AverageIfs.GetAvgFromMatchingCells (cognitive 18): AverageIfs.GetAvgFromMatchingCells 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":"main/SS/Formula/Functions/Averageifs.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"57a0ee86aad06297641a34d37968b78f069e2815a6fab2ed5e4ac368d0fe11d7"}},{"ruleId":"D2","level":"warning","message":{"text":"LookupUtils.XlookupIndexOfValue (cognitive 18): LookupUtils.XlookupIndexOfValue 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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ba60495f74afe8dd5cafee25910133b8d060a838eef3d0ca6bb6bbbc1dff1a2"}},{"ruleId":"D2","level":"warning","message":{"text":"StatsLib.mode (cognitive 18): StatsLib.mode 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":"main/SS/Formula/Functions/StatsLib.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfd6e1bf864d34de61f1db0f5064f77e5f79a950576b570409f4c250c9829039"}},{"ruleId":"D2","level":"warning","message":{"text":"XYNumericFunction.EvaluateInternal (cognitive 18): XYNumericFunction.EvaluateInternal 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":"main/SS/Formula/Functions/XYNumericFunction.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5f89f35733d9da7cc4665a7ef4ef782c493718b38b441726bba3340cc20688"}},{"ruleId":"D2","level":"warning","message":{"text":"DataFormatter.FormatCellValue (cognitive 18): DataFormatter.FormatCellValue 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":1164}}}],"partialFingerprints":{"codehealthFindingId/v1":"625651aee12e491a5d7cec54faeab19b3a8831c1f6af39c21b5566d1812fb8e8"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageUtils.GetJpegDpi (cognitive 18): ImageUtils.GetJpegDpi 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":"main/SS/Util/ImageUtils.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"9820c8a71fdf44eaf2ae4ca9017a9f55820fa7f185f2ca3c16359a79ac391e52"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlConverter.ProcessSheet (cognitive 18): ExcelToHtmlConverter.ProcessSheet 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"47214f403457ffdbd3954d1e547390e8d19b93271c2a42cb6a59071e8053fe19"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFExportToXml.Compare (cognitive 18): XSSFExportToXml.Compare 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":"ooxml/XSSF/Extractor/XSSFExportToXml.cs"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2c1ccc5b0af0cb1cd12a952497ca96451ae06c2c31c382c858f6df3107bf055"}},{"ruleId":"D2","level":"warning","message":{"text":"SXSSFFormulaEvaluator.EvaluateAllFormulaCells (cognitive 18): SXSSFFormulaEvaluator.EvaluateAllFormulaCells 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":"ooxml/XSSF/Streaming/SXSSFFormulaEvaluator.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"79486af36a286b2992390cdb44b1345b06156ebc469c32b745b7c716d0067368"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_BarChart.Write (cognitive 18): CT_BarChart.Write 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":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe0c696b935f8c0d460ad7820bddcd1993dc933f580313fe040fe3fcaf3b5d1"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TextBodyProperties.Write (cognitive 18): CT_TextBodyProperties.Write 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":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"6133ca6b2c796f032fdf1d408ea29b1311b648ad73e00f2be2627d054eef60c0"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CacheField.Write (cognitive 18): CT_CacheField.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":2281}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61cbb677fda5c9d00af2faf01bf10ff4faa749be16abd60d29b5e61a264b199"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_RPrElt.Parse (cognitive 18): CT_RPrElt.Parse 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":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fc7b13b907358da10e74da40eda3d2a2fa996a7efc775fd1eb0f4f8da83015b"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Font.Parse (cognitive 18): CT_Font.Parse 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":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"b461e68b93833784de7d68dcbe99023d795905e8eb214976d4df42142623d470"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TblPr.Write (cognitive 18): CT_TblPr.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2831}}}],"partialFingerprints":{"codehealthFindingId/v1":"8771788fd73f06884ed167ac3b614c21e102a8624aa65b78f606a3ce5c86cfc8"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TrPr.Parse (cognitive 18): CT_TrPr.Parse 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":3956}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cbd05744d7493e53372f77f97d1c6a99cb3bc0b5a75e4d0ed3a82200b494654"}},{"ruleId":"D2","level":"warning","message":{"text":"ChartFormatsAggregate.ChartFormatsAggregate.ctor (cognitive 17): ChartFormatsAggregate.ChartFormatsAggregate.ctor 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":"main/HSSF/Record/Aggregates/Chart/ChartFormatsAggregate.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b9a8d087a5335d8db9ae63f5243653bc6a99995a2e9b57b30008ad5268800f7"}},{"ruleId":"D2","level":"warning","message":{"text":"SeriesFormatAggregate.SeriesFormatAggregate.ctor (cognitive 17): SeriesFormatAggregate.SeriesFormatAggregate.ctor 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":"main/HSSF/Record/Aggregates/Chart/SeriesFormatAggregate.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"5211389b51205215477d968a6d8ee443280d2830a41561f01c035d705a5b354d"}},{"ruleId":"D2","level":"warning","message":{"text":"NPOIFSMiniStore.GetFreeBlock (cognitive 17): NPOIFSMiniStore.GetFreeBlock 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":"main/POIFS/FileSystem/NPOIFSMiniStore.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0adbb7bd44f63a3dc28c5b93313fea745a681271e8f76a0de3df8853aa4315a"}},{"ruleId":"D2","level":"warning","message":{"text":"POIFSDocumentPath.Equals (cognitive 17): POIFSDocumentPath.Equals 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":"main/POIFS/FileSystem/POIFSDocumentPath.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"22792219aa56be166b5dcf2d0600a5f8d3e18007c3a050f1c3a0f62d43dd6bb8"}},{"ruleId":"D2","level":"warning","message":{"text":"CellNumberFormatter.WriteScientific (cognitive 17): CellNumberFormatter.WriteScientific 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8337f936214d20889a2989bfe18d39cc02efbfb0d29e779f8ecd2eef52fdc7"}},{"ruleId":"D2","level":"warning","message":{"text":"CellNumberFormatter.WriteFractional (cognitive 17): CellNumberFormatter.WriteFractional 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"023c006c71680a7a09d634efee62836226cdc0704541c142fb2de0156eacb638"}},{"ruleId":"D2","level":"warning","message":{"text":"ConditionalFormattingEvaluator.GetMatchingCells (cognitive 17): ConditionalFormattingEvaluator.GetMatchingCells 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":"main/SS/Formula/ConditionalFormattingEvaluator.cs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e86501558ac5a05599ae4d58afaf757204bede0b250d6f888c80f5571943a78"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaCellCacheEntrySet.Remove (cognitive 17): FormulaCellCacheEntrySet.Remove 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":"main/SS/Formula/FormulaCellCacheEntrySet.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfff86066af5da5598ce71c5406446ec94e6a64fff0bd41a680e844b5e62044c"}},{"ruleId":"D2","level":"warning","message":{"text":"FloorCeilingMathBase.Evaluate (cognitive 17): FloorCeilingMathBase.Evaluate 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":"main/SS/Formula/Functions/FloorCeilingMathBase.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"3794cca5848acffcf3ce4d4d3bc9a55cb95947e33ac390064134353b53bf536c"}},{"ruleId":"D2","level":"warning","message":{"text":"Imaginary.Evaluate (cognitive 17): Imaginary.Evaluate 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":"main/SS/Formula/Functions/Imaginary.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab12a5297802b5d14f912b08d15a20f88c3ced601564510217ce6fe82654d19"}},{"ruleId":"D2","level":"warning","message":{"text":"TwoArrayArg.Evaluate (cognitive 17): TwoArrayArg.Evaluate 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":"main/SS/Formula/Functions/Matrix/MatrixFunction.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee250c22d215c1163aa80b18e296e0c19fe9bad35216b9a330f3d9075c56b1d0"}},{"ruleId":"D2","level":"warning","message":{"text":"OperationEvaluationContext.GetDynamicReference (cognitive 17): OperationEvaluationContext.GetDynamicReference 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":"main/SS/Formula/OperationEvaluationContext.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"05a1ea7095679e745f14e7054957b0795ee7c4b0a278e98614830588d6548009"}},{"ruleId":"D2","level":"warning","message":{"text":"TableStyleTypeExtension.GetRange (cognitive 17): TableStyleTypeExtension.GetRange 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":"main/SS/UserModel/TableStyleType.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a914fa8430e1733babf5d7f2373682087add5a2e3afcdb30e3e846dccf96238"}},{"ruleId":"D2","level":"warning","message":{"text":"NumberComparer.Compare (cognitive 17): NumberComparer.Compare 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":"main/SS/Util/NumberComparer.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5711a5f2f14cc618f010a440dd476ea8af74735b1ce922abdc09fa84f112eab"}},{"ruleId":"D2","level":"warning","message":{"text":"SheetUtil.CopyRow (cognitive 17): SheetUtil.CopyRow 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"cad56532037016088418070fc16361da85cdfd0992d7353ced0f6bd2a13dde94"}},{"ruleId":"D2","level":"warning","message":{"text":"SheetUtil.GetColumnWidth (cognitive 17): SheetUtil.GetColumnWidth 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"743694ebc83e003fdfc33945ec5d69554dd4ff427bf0594999953bb0224d7659"}},{"ruleId":"D2","level":"warning","message":{"text":"BigInteger.BitLength (cognitive 17): BigInteger.BitLength 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":"main/Util/BigInteger.cs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"af46b6167b23d19d9551ad6acf6083508b16486792a001a322d0f9407ef05ba1"}},{"ruleId":"D2","level":"warning","message":{"text":"MutableBigInteger.leftShift (cognitive 17): MutableBigInteger.leftShift 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":"main/Util/BigInteger.cs"},"region":{"startLine":2229}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb4483b0b8ff462c5ac1f9cd8011e423c2a3cce7e5fe1d98b645a34704d4ec1"}},{"ruleId":"D2","level":"warning","message":{"text":"HexDump.Dump (cognitive 17): HexDump.Dump 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":"main/Util/HexDump.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51599055bf1f4713811ed68a8f62ade817fd7b4d9872d95e8cba471a0271bf8"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.CopyColumn (cognitive 17): XSSFSheet.CopyColumn 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":4161}}}],"partialFingerprints":{"codehealthFindingId/v1":"222593014989b615a57f50dadcfa6f154b764df60df942c217906a0c3b545175"}},{"ruleId":"D2","level":"warning","message":{"text":"ZipPackage.ZipPackage.ctor (cognitive 17): ZipPackage.ZipPackage.ctor 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":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1e58313d3ed27944caee74f2c73f0081a3677cb41c13a2d2fc67cfbb596307"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_BarSer.Parse (cognitive 17): CT_BarSer.Parse 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":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"beaa294e70adf6520239927853026521390d557431a25bd6678e16c423ce3ea0"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_BubbleSer.Parse (cognitive 17): CT_BubbleSer.Parse 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":"OpenXmlFormats/Drawing/Chart/BubbleChart.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fbef39c7b4c270bf9ed0ddc2307ada9409184fabc826e473791d435a5c77dd1"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_LineChart.Write (cognitive 17): CT_LineChart.Write 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":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"368853a524631b03bf8a82ae70fd13af6ac1b8ea8c2e64da7095643207c23952"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Missing.Write (cognitive 17): CT_Missing.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":4082}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd65a85cc8e104d329389a2c1e0d4321146f702c933ecec75e4a52cb8f9940d5"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Number.Write (cognitive 17): CT_Number.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":4454}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbea9bd111a6556569ba74f6551299d29e7260212a2e9997033b226823fa9c7"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_String.Write (cognitive 17): CT_String.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":4824}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f7c3bb2dbd6ad30d37e5869d5e6c9a39bc058b9aa5ae5d56131e8aaec5e0a86"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PivotTableDefinition.Write (cognitive 17): CT_PivotTableDefinition.Write 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"201a09e0e605b551ab367ded17a961e35e4b2d92025c1d52f0ac3576e864c95f"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TblPrBase.Write (cognitive 17): CT_TblPrBase.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"35f138245d73ed784530789afdd5dd3a2a4cc6d6c354324e33c06fff9e17fe63"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TcPr.Write (cognitive 17): CT_TcPr.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4797}}}],"partialFingerprints":{"codehealthFindingId/v1":"05038fe26785a55a08c24386ef05debfc0300e0cfbbd01f3424381b608ae9683"}},{"ruleId":"D2","level":"warning","message":{"text":"DrawingManager.AllocateShapeId (cognitive 16): DrawingManager.AllocateShapeId 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":"main/HSSF/Model/DrawingManager.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"644e71efeeb5bf67d736c12ff0bae002789cb7163c518a708beda319cfd36a79"}},{"ruleId":"D2","level":"warning","message":{"text":"ColumnInfoRecordsAggregate.SetColumn (cognitive 16): ColumnInfoRecordsAggregate.SetColumn 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":"main/HSSF/Record/Aggregates/ColumnInfoRecordsAggregate.cs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"d615fa3e0888f1ffea7732ebf74adf56d216d4de5457b10707144c5354170cc4"}},{"ruleId":"D2","level":"warning","message":{"text":"LbsDataSubRecord.Serialize (cognitive 16): LbsDataSubRecord.Serialize 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":"main/HSSF/Record/LbsDataSubRecord.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"a52ebefd9f449ef66043affa6a0e8d50f756928e88422b103526d47c6a557a9a"}},{"ruleId":"D2","level":"warning","message":{"text":"StreamEncryptionInfo.StreamEncryptionInfo.ctor (cognitive 16): StreamEncryptionInfo.StreamEncryptionInfo.ctor 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":"main/HSSF/Record/RecordFactoryInputStream.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9fb25050fe278a15576399006d48d795b9171505e9d213e5ba97f343223d04e"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.ValidateArrayFormulas (cognitive 16): HSSFSheet.ValidateArrayFormulas 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41354dd58fed8d8ac3334261df1d25ad4972f827d0f5ac383ebf46495af3ed4"}},{"ruleId":"D2","level":"warning","message":{"text":"HSSFSheet.GetHyperlink (cognitive 16): HSSFSheet.GetHyperlink 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":2515}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e795dfd5466cec9854a200a40ade65bbbd442f215eed9c1dac9e94c9444b0d"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleFraction.BuildFractionMaxDenominator (cognitive 16): SimpleFraction.BuildFractionMaxDenominator 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":"main/SS/Format/SimpleFraction.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd242986be6670490e1decbfddee2a2e7bb1542532150c1f117385d3524f84ff"}},{"ruleId":"D2","level":"warning","message":{"text":"XLookupFunction._evaluate (cognitive 16): XLookupFunction._evaluate 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":"main/SS/Formula/Atp/XLookupFunction.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"6601b5972324846efed23b748f56023524be1473a4b02790303a48e060927c21"}},{"ruleId":"D2","level":"warning","message":{"text":"FormulaParser.Function (cognitive 16): FormulaParser.Function 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1615}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed4ba2d7ccb9d1964ace2cf1de0272a3f30cf111e7fbc6e9ec2893dec2d1a920"}},{"ruleId":"D2","level":"warning","message":{"text":"Address.Evaluate (cognitive 16): Address.Evaluate 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":"main/SS/Formula/Functions/Address.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95a748110a9266e6deee5a9c7c2d9e27ba3c18371babff0cdd1becfc8d95aee"}},{"ruleId":"D2","level":"warning","message":{"text":"Dec2Bin.Evaluate (cognitive 16): Dec2Bin.Evaluate 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":"main/SS/Formula/Functions/Dec2Bin.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9c0222f9f54f49ae60c670fc8d986f572634b2c06c38a601fc3c51c8f85fe1d"}},{"ruleId":"D2","level":"warning","message":{"text":"ImReal.Evaluate (cognitive 16): ImReal.Evaluate 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":"main/SS/Formula/Functions/ImReal.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7bb0daa3fed22d57ca4ab270216263905dfac3d38c5baaadf67707aa3351605"}},{"ruleId":"D2","level":"warning","message":{"text":"PercentRank.Evaluate (cognitive 16): PercentRank.Evaluate 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":"main/SS/Formula/Functions/PercentRank.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"d899895d33b4aa8be30b74106a20f03cf317d5cf4842ba5bad9b83b35e90306b"}},{"ruleId":"D2","level":"warning","message":{"text":"OperationEvaluationContext.CreateExternSheetRefEvaluator (cognitive 16): OperationEvaluationContext.CreateExternSheetRefEvaluator 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":"main/SS/Formula/OperationEvaluationContext.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"53cbf67f89b3ae8fe2e0db5b1ace8f8dea99d85d185cf254db76384cfbe21797"}},{"ruleId":"D2","level":"warning","message":{"text":"ExternSheetNameResolver.PrependSheetName (cognitive 16): ExternSheetNameResolver.PrependSheetName 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":"main/SS/Formula/PTG/ExternSheetNameResolver.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c58f944121f7473bff66aa88ea728a1ddebc7585ff5a4c37d6c9e5fae0cf2c4"}},{"ruleId":"D2","level":"warning","message":{"text":"CellRangeUtil.MergeCellRanges (cognitive 16): CellRangeUtil.MergeCellRanges 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":"main/SS/Util/CellRangeUtil.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0efe5160febecdd70fa1f1d6e26fe7758a43d65f401ea999696f4ff5b3bd812"}},{"ruleId":"D2","level":"warning","message":{"text":"CellUtil.SetCellStyleProperties (cognitive 16): CellUtil.SetCellStyleProperties 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":"main/SS/Util/CellUtil.cs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcfade9656b1470fe3951abf42a1399bfa7df20dde64271e85659ad380177b8b"}},{"ruleId":"D2","level":"warning","message":{"text":"SheetUtil.MeasureCellWidth (cognitive 16): SheetUtil.MeasureCellWidth 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b09ebb69504d244e298f97f13286f595dfd71eb7137bc35d7bf1eea8a6ede81"}},{"ruleId":"D2","level":"warning","message":{"text":"MutableBigInteger.compareHalf (cognitive 16): MutableBigInteger.compareHalf 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":"main/Util/BigInteger.cs"},"region":{"startLine":1967}}}],"partialFingerprints":{"codehealthFindingId/v1":"8001924d41ba5b9b9687fa9feae2d25f891a5a302c644bdea3da53ff7fc8fb65"}},{"ruleId":"D2","level":"warning","message":{"text":"HexRead.ReadData (cognitive 16): HexRead.ReadData 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":"main/Util/HexRead.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"12f55c1f2406db86e91d9edfd31d3357cb52773e0e0fa479d2bf8c8f008b20a2"}},{"ruleId":"D2","level":"warning","message":{"text":"ExcelToHtmlUtils.BuildMergedRangesMap (cognitive 16): ExcelToHtmlUtils.BuildMergedRangesMap 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":"ooxml/SS/Converter/ExcelToHtmlUtils.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7eba164c05b70992a31a2df02b21612654a6e79a4bc20c3c81a9620b1027d3"}},{"ruleId":"D2","level":"warning","message":{"text":"SheetDataWriter.WriteCell (cognitive 16): SheetDataWriter.WriteCell 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":"ooxml/XSSF/Streaming/SheetDataWriter.cs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3bfb80e519040a00d469ed3e99e919624e932919118deb3e5a06398aca29b4e"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFCellBorder.GetBorder (cognitive 16): XSSFCellBorder.GetBorder has cognitive complexity 16 (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":"ooxml/XSSF/UserModel/Extensions/XSSFCellBorder.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"75bddeb7445e6e87734301f841965112e5b25767dd72f2066a3ebf78f9421fde"}},{"ruleId":"D2","level":"warning","message":{"text":"ColumnHelper.GetColumn1Based (cognitive 16): ColumnHelper.GetColumn1Based 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":"ooxml/XSSF/UserModel/Helpers/ColumnHelper.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8a53b7c8c37b602dbf8166c8c9d9a0629fb4397073542960745f6d866c630f"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFName.ValidateName (cognitive 16): XSSFName.ValidateName 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":"ooxml/XSSF/UserModel/XSSFName.cs"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f5b15147c7c361fff3042f5ac851f9be3e2c4aad505173d215b3f66c1b2cb3"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFRichTextString.ApplyFont (cognitive 16): XSSFRichTextString.ApplyFont 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":"ooxml/XSSF/UserModel/XSSFRichTextString.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a52101bc4a490c777fa7513bf3953292151aa2c8ef0df79448e22e4e0e5535"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.CreateFreezePane (cognitive 16): XSSFSheet.CreateFreezePane 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":2129}}}],"partialFingerprints":{"codehealthFindingId/v1":"0df518cb8502ee7746101c1cbba658681f9a00a0adf4c65b36a3a0d9555a854c"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.RemoveColumn (cognitive 16): XSSFSheet.RemoveColumn 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":2931}}}],"partialFingerprints":{"codehealthFindingId/v1":"97593e027f2154a1fa348efcdc7e94af66939cc45c5aa5d00c0c6f34f32c00ca"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFSheet.ValidateArrayFormulas (cognitive 16): XSSFSheet.ValidateArrayFormulas 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":4985}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc55f565728960742f0ef7be5c9b8b86d15255a348d076622b5760dbd50610da"}},{"ruleId":"D2","level":"warning","message":{"text":"XSSFVMLDrawing.FindCommentShape (cognitive 16): XSSFVMLDrawing.FindCommentShape 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":"ooxml/XSSF/UserModel/XSSFVMLDrawing.cs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a4a5d136366393ec4431dec566e66caadfbf7795b6259c448e153bcb2800976"}},{"ruleId":"D2","level":"warning","message":{"text":"XWPFRun.handleRubyContent (cognitive 16): XWPFRun.handleRubyContent 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":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"10ae6d3fbe3f78d09f31b434f2136461256afabe9718cf86b0d5def65b7cde4d"}},{"ruleId":"D2","level":"warning","message":{"text":"PackagePropertiesPart.SetDateValue (cognitive 16): PackagePropertiesPart.SetDateValue 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":"openxml4Net/OPC/Internal/PackagePropertiesPart.cs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"0787afaa1f08959f18508ca16669c1d9255e493cd4e37ce0e73b56ea0043a592"}},{"ruleId":"D2","level":"warning","message":{"text":"PackagingUriHelper.ResolvePartUri (cognitive 16): PackagingUriHelper.ResolvePartUri 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":"openxml4Net/OPC/PackagingUriHelper.cs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab85a61cf525d69f22a275844d0e585df29d5f459d42cef874d320b15a8f4718"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Bar3DChart.Write (cognitive 16): CT_Bar3DChart.Write 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":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":1062}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4180b897f9dc97e7fb148bf1080c8fc4431d3bad2a5a1158d346ef777405c1c"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_LineSer.Parse (cognitive 16): CT_LineSer.Parse 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":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"990367c4eb72ab2cfcb178da737888203c0d0e6160636757226960efcc638558"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ScatterSer.Parse (cognitive 16): CT_ScatterSer.Parse 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":"OpenXmlFormats/Drawing/Chart/ScatterChart.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf5cf39a17ca2a72dcb9f1070be04b9ce10b8626b88ce661c125d9f71bea871a"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ShapeProperties.Write (cognitive 16): CT_ShapeProperties.Write 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":"OpenXmlFormats/Drawing/ShapeProperties.cs"},"region":{"startLine":2131}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f8384c9e9f5a045e035a5822816647085801d387647c560035f7c65ae841872"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_ShapeProperties.Write (cognitive 16): CT_ShapeProperties.Write 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":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e62318ccec28034420297983eda14256b69857522927302313bb41c4c143d7"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TextBodyProperties.Parse (cognitive 16): CT_TextBodyProperties.Parse 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":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d967b29ac0a5a670c957aa8909317457da1a9bc21e6082493fbe9dead9a100b"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_CacheField.Parse (cognitive 16): CT_CacheField.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":2237}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde4b708df67a05569c16dfc4e5197ebe9e5aebfa42683e866001e2cadb6705b"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_PivotHierarchy.Parse (cognitive 16): CT_PivotHierarchy.Parse 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":5877}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcea480e80734b2416f554663591ebc1baf8b12ba4e9c0ad48292b5a12890d9b"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Comments.FindExtraNamespace (cognitive 16): CT_Comments.FindExtraNamespace 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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"d95130edbb6853ff17caa683bd1dcd79d3e305ec4d37892ccc343319a1438393"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Lvl.Parse (cognitive 16): CT_Lvl.Parse 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":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"06eba4d881bae5e69b738f6c0af56654cc12b111b050e4cd29240c81f79e9689"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_Lvl.Write (cognitive 16): CT_Lvl.Write 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":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":1350}}}],"partialFingerprints":{"codehealthFindingId/v1":"316424ecbf48d6e79391ed3c12576178fc0d7cf0d1f8b8926e3fcdb3c387523b"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_MailMerge.Write (cognitive 16): CT_MailMerge.Write 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":3009}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8f23d683f21d60e71686671be885434b77d044b338fef68ee0443eaa3296463"}},{"ruleId":"D2","level":"warning","message":{"text":"CT_TcPrInner.Write (cognitive 16): CT_TcPrInner.Write 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4250}}}],"partialFingerprints":{"codehealthFindingId/v1":"27eb1909981939ca4366ac9b66a2f631c0b13903671e71d88cf6cb13cdc0cdc6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: PivotTable/CT_PivotCacheDefinition.cs: FileTooLong \u2014 4778 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99f6fcd552e560cc9fcb4a3ae916f766cc117bcde1869ff81e98946ed7f6ad8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Paragraph.cs: FileTooLong \u2014 4663 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb29d8dfbb84f0e4c6855942d67ac13609141c65b06e89685f666534f2ffbc6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: PivotTable/CT_PivotTableDefinition.cs: FileTooLong \u2014 4124 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"086d56274c24c0c8290a14468a3b7c735ff48d260458e2e5e0672e4219bbd327"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_P: TooManyMethods \u2014 609 significant lines (blank, comment-only and punctuation-only lines excluded), 240 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"59504e1747daacb0bbbbf8b28aca3cd42c0cf04476678709920ca2958f1376b7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_R: TooManyMethods \u2014 577 significant lines (blank, comment-only and punctuation-only lines excluded), 240 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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e88c942a0d49c6069156d07f5e19f52a16d56b2074adbe5f3cacab4b7c2f0c2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Settings.cs: FileTooLong \u2014 3973 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db470a319668690bdf8fa0397afe864015fc264ba211f79c950dfbb81fb09a29"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_Comment: TooManyMethods \u2014 499 significant lines (blank, comment-only and punctuation-only lines excluded), 221 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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddd3f178b8b48e40bbc773da94c7b35e00a06c5dd344fd0d275654ada904fc13"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Table.cs: FileTooLong \u2014 3582 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca54326d0fb3324ea9e33f43168027e559aca331fc5e77c27ed583166891c6f8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Vml/Main.cs: FileTooLong \u2014 3570 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"359c14eaf014045340fa67ab73b298f2c21fd2aa8a0553f1a5a735676283aed1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XSSFSheet: TooManyMethods \u2014 2862 significant lines (blank, comment-only and punctuation-only lines excluded), 209 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"699d8a3950e2ea86542c97ec3d76faf6427c5154ce0f4e916f095b87e3e5ada6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/XSSFSheet.cs: FileTooLong \u2014 2926 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":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c91ebb807c33e698a2f31afef48321a5b1405713c0a8bcece8b07fa4bdb2c3b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Drawing/ShapeEffects.cs: FileTooLong \u2014 2547 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":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad8eda82b976c2123a5fc3a9ab09c8a9d533fb8902e204a64d721ad39aa86cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Vml/OfficeDrawing.cs: FileTooLong \u2014 2241 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":"OpenXmlFormats/Vml/OfficeDrawing.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbc0a4cffa2b1ae1677b544efb0a76e0f3004bd5daadc0345c71d56e9411752"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HSSFSheet: TooManyMethods \u2014 1212 significant lines (blank, comment-only and punctuation-only lines excluded), 126 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b277ab3172b131c8c8ac492b25c4b5031d46d369d6308a3792be2acbffab720e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XSSFWorkbook: TooManyMethods \u2014 947 significant lines (blank, comment-only and punctuation-only lines excluded), 125 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":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"711fda3c36c428db91d3132ff4cc20d5243f06fbffe9a4f6d816123cbca2b5fe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SXSSFSheet: TooManyMethods \u2014 580 significant lines (blank, comment-only and punctuation-only lines excluded), 118 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":"ooxml/XSSF/Streaming/SXSSFSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e560dd173083297cf241a89447e81fadb4d7760b55b9f61046dfd11989dd24be"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Sdt.cs: FileTooLong \u2014 1946 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":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6761a39eca806213757e991d7fedd9d6fcacd8a8bf5838e21d15d45bf8972ad"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HSSFWorkbook: TooManyMethods \u2014 893 significant lines (blank, comment-only and punctuation-only lines excluded), 110 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":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d90cf20746df131c448d1d0a583b34db49f5c95e9a6f1057b04671558d1f8c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InternalWorkbook: TooManyMethods \u2014 1313 significant lines (blank, comment-only and punctuation-only lines excluded), 107 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":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90251ca43c0eb5bb63eb0ad2e1cafb0ca4edbb540547d32b253df5c74ba190cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Run.cs: FileTooLong \u2014 1672 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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9949a3d05414bc1c099836920baff22df75682ba96b2ce37f39dadcd3d30d1b1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XWPFDocument: TooManyMethods \u2014 698 significant lines (blank, comment-only and punctuation-only lines excluded), 100 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":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1080a3a8b0069325d28084236d9724bd41b8ec7f23302b0b7ca6d473ab0cc2e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_TrPrBase: TooManyMethods \u2014 264 significant lines (blank, comment-only and punctuation-only lines excluded), 95 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed1441d3a64318076992aa977d74530cc277fc485ea46fcec45aa4656d92926c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/CustomXml.cs: FileTooLong \u2014 1540 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":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a99dc0bc4085e737e852557450f56f25fad43a583395aec2615080875d68519"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Util/BigInteger.cs: FileTooLong \u2014 1513 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":"main/Util/BigInteger.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2905553059be1af0d3420699516fee7639e26cfec1ee8c7544511a020c50b998"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_Settings: ClassTooLong \u2014 1161 significant lines (blank, comment-only and punctuation-only lines excluded), 9 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b8a8c902b6636c71cf1a963a902fd7bdada687f0c77bf72254858f0d2a456b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Styles.cs: FileTooLong \u2014 1403 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":"OpenXmlFormats/Wordprocessing/Styles.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa225df101d7e0a07332ef83cfd3b7dd1a21d9f88ee3cdd5bb87ae4ce01aec6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Drawing/ShapeProperties.cs: FileTooLong \u2014 1376 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":"OpenXmlFormats/Drawing/ShapeProperties.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a660857b4b91cad1d7aaae63be38081297aefc7dd417aea0b027528c889f9961"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InternalSheet: TooManyMethods \u2014 846 significant lines (blank, comment-only and punctuation-only lines excluded), 81 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":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"acec09b6547a14ec2bfd5d48e81967f113a22acefec9297bf0235277ddda8e17"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/InternalWorkbook.cs: FileTooLong \u2014 1327 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":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0d8a27e2265b6c985ff7b31cdf18b1c65dee8ff2e26b21cd744466e10ccf85"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Drawing/ShapeGeometry.cs: FileTooLong \u2014 1323 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":"OpenXmlFormats/Drawing/ShapeGeometry.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c824d7195be5a085a1dac6f16258536649eb9a08f73e7e0bd15edd4eb39e6846"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_PivotTableDefinition: ClassTooLong \u2014 1052 significant lines (blank, comment-only and punctuation-only lines excluded), 11 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d0b5e0e6ab718bbf5b37417c92ef0481a8874931ac90690ed30e0c0f3ca2d82"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/HSSFSheet.cs: FileTooLong \u2014 1262 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":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"360f26edee3b2589d335ec0cdcc60b9dd70ba68cdb4f343fb0df73af4fbb9129"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Drawing/SpreadsheetDrawing.cs: FileTooLong \u2014 1221 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":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7501f41e54816fb10923a07713057f004db75f932fc62722e1f3205f4b2bd35"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: OPCPackage: TooManyMethods \u2014 622 significant lines (blank, comment-only and punctuation-only lines excluded), 72 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":"openxml4Net/OPC/OPCPackage.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7546eb94bac43a0b11fb6e7e2c886052e8fc41ce04e1b9d6b8628c47c5fc9f41"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BigInteger: TooManyMethods \u2014 753 significant lines (blank, comment-only and punctuation-only lines excluded), 70 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":"main/Util/BigInteger.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8a98d7c81717a0f6e1e8c488e7a3f705f2bf5b58f258c6d2469b84da5c8fed4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Formula/FormulaParser.cs: FileTooLong \u2014 1158 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cd9a9e5312bb6c8a3d245d79424751320de7723b0650205f9164c3be020c3e7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FormulaParser: TooManyMethods \u2014 1098 significant lines (blank, comment-only and punctuation-only lines excluded), 69 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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d5783367bd0aac8ceb013f5f2555ac99d0b3af5172a0ecd28e46d983495c42"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SignatureConfig: TooManyMethods \u2014 253 significant lines (blank, comment-only and punctuation-only lines excluded), 69 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":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f316145fb15ff8913049e63a13e86e352dbcebe08284a79235e873e029bde4f1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_Font: TooManyMethods \u2014 447 significant lines (blank, comment-only and punctuation-only lines excluded), 68 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":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3b0e2d6bc87610fcf431554288a4e08e07a43f35c7406d105ee4f18c65d165f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SXSSFWorkbook: TooManyMethods \u2014 370 significant lines (blank, comment-only and punctuation-only lines excluded), 67 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":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"29d95a617247a0c93121878c8729ca6ba8c7bda1e763094ace6efc836d612257"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XDDFChart: TooManyMethods \u2014 414 significant lines (blank, comment-only and punctuation-only lines excluded), 66 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":"ooxml/XDDF/UserModel/Chart/XDDFChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a60dd4d0e208797fbec3d75f31145c465b90007a0235c8d2b6e3d7f0ef5a5d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/HdrFtr.cs: FileTooLong \u2014 1082 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":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1b8ad5dd4db09404d789dfff8abb4f3d3a7179e44ce89750414a94c7ff0ba9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Numbering.cs: FileTooLong \u2014 1075 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":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3190f9c64ed14da3206443564ca794f315fd925e1bc21589e40ec0b3cdc8a0af"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MutableBigInteger: TooManyMethods \u2014 755 significant lines (blank, comment-only and punctuation-only lines excluded), 59 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":"main/Util/BigInteger.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b1b6fe80cedd9f52db2f8f6854c2e9d6704e3e4b6ff0ed83b8590e2e7d95aa"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/XSSFWorkbook.cs: FileTooLong \u2014 971 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":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1df77fbf1aaadb54e04a4698f5355e9509ce46ed82dc2804a9877c8df6afca0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Spreadsheet/ExternalConnections.cs: FileTooLong \u2014 963 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":"OpenXmlFormats/Spreadsheet/ExternalConnections.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e246858770038aae904d30f2fea22d7193b34ce87ab416298658e522565e367b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_Worksheet: TooManyMethods \u2014 595 significant lines (blank, comment-only and punctuation-only lines excluded), 57 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":"OpenXmlFormats/Spreadsheet/Sheet/CT_Worksheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c91108d8dc36a5af42809c98e688b7cb886982bd3eccce0a0011b6b9146fd1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InternalChart: TooManyMethods \u2014 568 significant lines (blank, comment-only and punctuation-only lines excluded), 57 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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"99910981d7a51117e166b9804ccedfd9e1258ace595c76fa670ff002844e89f7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XSSFDialogsheet: TooManyMethods \u2014 275 significant lines (blank, comment-only and punctuation-only lines excluded), 57 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":"ooxml/XSSF/UserModel/XSSFDialogsheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d0632c0f9d125095a0d612b3cd1835f460e865f9442a1b2fb6564a2c48da70"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/HSSFWorkbook.cs: FileTooLong \u2014 934 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":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30e00e062a23675d05664efa0e415bcbebd749d69e8f1d66a6084fc5558f76c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_Compat: ClassTooLong \u2014 737 significant lines (blank, comment-only and punctuation-only lines excluded), 3 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":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d19313ac7aa190342cd0f7c9e1201af093b4afb9cdc08cfa863730bf21347b90"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HSSFChart: TooManyMethods \u2014 753 significant lines (blank, comment-only and punctuation-only lines excluded), 55 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"527d0211c3a6f0a7bff448e260e9793795d345fd0f850f6a59e1466fd1fd7084"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_RPrElt: TooManyMethods \u2014 329 significant lines (blank, comment-only and punctuation-only lines excluded), 55 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":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"117b87f2fa036ed1df21e847e8c09a2deb995e020f7cec16ad49d27db50826b1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XDDFTextRun: TooManyMethods \u2014 318 significant lines (blank, comment-only and punctuation-only lines excluded), 55 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":"ooxml/XDDF/UserModel/Text/XDDFTextRun.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76fe1708570b5c7ecb39363bcd511d377192bc025d73c927186f304f90f71ba2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/InternalSheet.cs: FileTooLong \u2014 878 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":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d7ce0b91d618bf44f93b478c31b20e00d6ca4e620bd0bcaaf4fb8a79e447ed"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_RPr: TooManyMethods \u2014 603 significant lines (blank, comment-only and punctuation-only lines excluded), 52 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a184c1231d1d4e13585a528e65ccafea9aa86bda707b31a3b5f0eb93b72235"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Drawing/Text.cs: FileTooLong \u2014 856 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":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a7a9bbc187741111299b27dce7a739eeea3a024a6bd4a169821947d3ee08cf6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/HSSFChart.cs: FileTooLong \u2014 854 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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d6778d449bc6914b8f44c02956abd49698e07af4acac05c5daf8f2ae496ba02"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Usermodel/XWPFParagraph.cs: FileTooLong \u2014 854 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":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"129fd624e14fe3385a268ee03813a6655a5234f85b3444f1d2c4fa501076ea6f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LittleEndian: TooManyMethods \u2014 217 significant lines (blank, comment-only and punctuation-only lines excluded), 50 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":"main/Util/LittleEndian.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9626bea95636625857d4708a57c7924a2166d48f9db32e7d6504edf513bd1f40"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Markup.cs: FileTooLong \u2014 827 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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"75dc668471028a0c29cc7a8e8ff7d708773a9f44795cb0bbb70d9c08f4344bce"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XSSFCell: TooManyMethods \u2014 597 significant lines (blank, comment-only and punctuation-only lines excluded), 49 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":"ooxml/XSSF/UserModel/XSSFCell.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9105291a715496539ef587ea2380fbc03dd97ec3f4f0e1fa778e51161d86b40b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StylesTable: TooManyMethods \u2014 493 significant lines (blank, comment-only and punctuation-only lines excluded), 49 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":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d983e7a5a7b09d896644f8ce469c08d0ea58732678321bbb7cdd447cab700bb7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_PivotField: ClassTooLong \u2014 642 significant lines (blank, comment-only and punctuation-only lines excluded), 4 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":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f92533a9649885f88c0712b219fe62a5a60cfcbeae590ee94ad48ffde713b0c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PackagePropertiesPart: TooManyMethods \u2014 179 significant lines (blank, comment-only and punctuation-only lines excluded), 48 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":"openxml4Net/OPC/Internal/PackagePropertiesPart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1e035cdbf3940cc5acea79eafc678b553d92543af278f0b993b0f9bb394d0ba"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/Document.cs: FileTooLong \u2014 793 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":"OpenXmlFormats/Wordprocessing/Document.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7159f2ab9a28e7aff41cbf600f5e4f7f9ef83a56fd7845c7eec95649a199647"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: EscherDump: ClassTooLong \u2014 620 significant lines (blank, comment-only and punctuation-only lines excluded), 8 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":"main/DDF/EscherDump.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a9b19096ef91373b2ef0902063cb1586f53308544e0ea4596f768b029181e06"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/PresetGeometry.cs: FileTooLong \u2014 770 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":"ooxml/XDDF/UserModel/PresetGeometry.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae160fbb55ebe48ba3d73b0550002d395e72e15a93ddfdc7b71d9ac7a9e3340c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XWPFRun: TooManyMethods \u2014 677 significant lines (blank, comment-only and punctuation-only lines excluded), 45 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":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae597a4e7e853314a09c9f2b4c4f50c788498c56d0f66fb440ec104b68bc71b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: EscherProperties: ClassTooLong \u2014 598 significant lines (blank, comment-only and punctuation-only lines excluded), 6 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":"main/DDF/EscherProperties.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"252f4c6effec6334de8628c32020781638f47a5e8cca2b1be6e7653ea545ede8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WorkbookEvaluator: TooManyMethods \u2014 490 significant lines (blank, comment-only and punctuation-only lines excluded), 44 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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5808b725dfff505851531cc567da0a1e9c2badd08db9cf802cd4cf5963a9b698"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XmlHelper: TooManyMethods \u2014 278 significant lines (blank, comment-only and punctuation-only lines excluded), 44 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":"openxml4Net/Util/XmlHelper.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a28c0e99ec1aa0b2b05d9de93bae00ef383f69617c8824c2fc2923e603163529"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PresetGeometryExtensions: ClassTooLong \u2014 574 significant lines (blank, comment-only and punctuation-only lines excluded), 2 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":"ooxml/XDDF/UserModel/PresetGeometry.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63744bada890dcd9e17bf6b66618fa1181f20ee6d5e864064ba236df5b558c5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Usermodel/XWPFDocument.cs: FileTooLong \u2014 711 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":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1626687b5dd85c78385b6dc9f05db152d2b0a3cda530c4ed15f1ac5dc9d66db"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Usermodel/XWPFRun.cs: FileTooLong \u2014 699 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":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f527634343b0433a69b736ed4fa415ca27858ac6988f07579594af8673196f7a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Spreadsheet/SupplementaryWorkbooks.cs: FileTooLong \u2014 694 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":"OpenXmlFormats/Spreadsheet/SupplementaryWorkbooks.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1a21b366c27b52272b3266d120cad8c91e908b2cc9c716f7ab28fe989453c2a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/LineChart.cs: FileTooLong \u2014 684 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":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fea5b1afdcf174dd6d996501023498cf07cf1c53c299a6d7d4eb5f51ce25ed2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/HSSFCell.cs: FileTooLong \u2014 684 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":"main/HSSF/UserModel/HSSFCell.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"06cfe4cb1cf4fead130eb0306d5d2ec1ea14052dfee4ad4686715e4c9da99cd0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XWPFParagraph: TooManyMethods \u2014 840 significant lines (blank, comment-only and punctuation-only lines excluded), 41 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":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f338b710def1a6d534fdfee92a4e9ca1c2bef7e98e5da9849a940ab36fa866b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NPOIFSFileSystem: TooManyMethods \u2014 316 significant lines (blank, comment-only and punctuation-only lines excluded), 41 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":"main/POIFS/FileSystem/NPOIFSFileSystem.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ccab40e673495a9a4fd42039ae17a18305648484c27badde7e8de160565eec"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EscherGraphics: TooManyMethods \u2014 243 significant lines (blank, comment-only and punctuation-only lines excluded), 41 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":"main/HSSF/UserModel/EscherGraphics.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c88df548e5d0f63afa993d4c3507201c15b09ccd011e7b0388b78566ff0892e6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Sheet/CT_Table.cs: FileTooLong \u2014 678 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":"OpenXmlFormats/Spreadsheet/Sheet/CT_Table.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb24a3d46cf5fe53a68eb50caa3551d7fc0bdb4c3004f0b70ee274e7d631dfa2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: POIXMLDocumentPart: TooManyMethods \u2014 272 significant lines (blank, comment-only and punctuation-only lines excluded), 40 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":"ooxml/POIXMLDocumentPart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d01990b8fb37c53f100c8e4f5833517fbbe036e7db2487a0fa75fa44db48779"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExtendedFormatRecord: ClassTooLong \u2014 522 significant lines (blank, comment-only and punctuation-only lines excluded), 7 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":"main/HSSF/Record/ExtendedFormatRecord.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"701ec9fa78b055c5037e3eb027d056ea8ea61a03d80a5aeea155aa8337c6cf0e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/PieChart.cs: FileTooLong \u2014 651 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":"OpenXmlFormats/Drawing/Chart/PieChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2aff01561939b7e0db21099e5f72886279aec1aa79525fb4ee00763e26cdb15"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Arrays: TooManyMethods \u2014 426 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":"main/Util/Arrays.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef898fc0984d48faa6bc9cefdb84c1bdf80d6711e0e476fbed482b56bb23986"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StringUtil: TooManyMethods \u2014 405 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":"main/Util/StringUtil.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"715492ad72c6886b1c8dbd9f7895b5fba6b79990383967295d4ae6192b6faf5b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_Property: TooManyMethods \u2014 169 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":"OpenXmlFormats/DocumentPropertiesCustom.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f6e28adfcaa26d1d36e9c919602817aa8e8df9f983dc2b3ebaee3095af14fc8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: OPC/OPCPackage.cs: FileTooLong \u2014 634 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":"openxml4Net/OPC/OPCPackage.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74217f53132c8250c0fbf5bac5ecfd5ae4097020c6373bc080d7eda897e9f087"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DDF/EscherDump.cs: FileTooLong \u2014 633 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":"main/DDF/EscherDump.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4258038745a8ec45a6b00106b66990000984b4aaf31be2686c15e515565b85cb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FormulaShifter: ClassTooLong \u2014 503 significant lines (blank, comment-only and punctuation-only lines excluded), 25 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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db549e23c8b5307014e210a2c32dab2e03c5ab48cf44992ddb5fdb4980a686f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_ParaRPr: ClassTooLong \u2014 503 significant lines (blank, comment-only and punctuation-only lines excluded), 4 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e7e5dbdbff0b14266c0d55b38a906e37034dc8351f9f90a94359507fe80d7cc"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LocaleUtil: ClassTooLong \u2014 494 significant lines (blank, comment-only and punctuation-only lines excluded), 10 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":"main/Util/LocaleUtil.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0350d11d9849a90ff1699db91ab49b3226b4e05acdfab66605cc4bd4f070525e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CellNumberFormatter: ClassTooLong \u2014 491 significant lines (blank, comment-only and punctuation-only lines excluded), 28 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2194659c65276d4a4c9ef8ce65e7502b252e01b496617663fa18ca507ba6f599"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/XSSFCellStyle.cs: FileTooLong \u2014 612 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":"ooxml/XSSF/UserModel/XSSFCellStyle.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c5506e63612226bb7e7c3ffc208b851f785228a11b6ae28e70be00e912b8e18"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/XSSFCell.cs: FileTooLong \u2014 610 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":"ooxml/XSSF/UserModel/XSSFCell.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"612502457353515969a03007bf7ed7dcd1fd5a6b0f511832688ecd56f6180f20"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_PPrBase: ClassTooLong \u2014 482 significant lines (blank, comment-only and punctuation-only lines excluded), 20 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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be49a87055c424ccc5b4040c2cb0bb702ff218f770b5635f5c479c2647e0c30"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Sheet/CT_Worksheet.cs: FileTooLong \u2014 602 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":"OpenXmlFormats/Spreadsheet/Sheet/CT_Worksheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f45180be18e69829ac1771d4b53783cada39f0accc2c65a445f8ce6d6e31c20"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: DDF/EscherProperties.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":"main/DDF/EscherProperties.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48700a036daa9bce7859331b5c68eb0d8ec8fbefff72eb30f673dc5c50335b1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HSSFCell: TooManyMethods \u2014 669 significant lines (blank, comment-only and punctuation-only lines excluded), 36 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":"main/HSSF/UserModel/HSSFCell.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5cee548ad1f9f1c0f8f32a155fb2b35edb1de00acc5debec2143e084119c683"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SXSSFCell: TooManyMethods \u2014 482 significant lines (blank, comment-only and punctuation-only lines excluded), 36 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":"ooxml/XSSF/Streaming/SXSSFCell.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"608d80db35744297c17a04b7269584a569096c513e63272c23aa77705e860c94"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExcelToHtmlConverter: ClassTooLong \u2014 479 significant lines (blank, comment-only and punctuation-only lines excluded), 21 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":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4423d8757fe0dd378850de9df4eaffee82001e3c48a7369dc51c7dc0b37baea9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Chart/BarChart.cs: FileTooLong \u2014 598 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":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb9f2909ef659935b9ff773451f5bdd0316ee78e21d07a70333830acf34cc9dc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Streaming/SXSSFSheet.cs: FileTooLong \u2014 595 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":"ooxml/XSSF/Streaming/SXSSFSheet.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6415a8dcf94d3022e6cbb0f02da2aec127f5e8aea74782d2e39d5c7d4ae68a0b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: EscherAggregate: ClassTooLong \u2014 470 significant lines (blank, comment-only and punctuation-only lines excluded), 23 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":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"005311f5d4ba8bb7831511f30142f8ee9a821918663bcc730634f06937a83cf8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PropertyTemplate: TooManyMethods \u2014 412 significant lines (blank, comment-only and punctuation-only lines excluded), 35 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":"main/SS/Util/PropertyTemplate.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15641a7dc8b7f351d0524d954a3f4beae33bf71e7e700ba428521f0e00bf85a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DateUtil: TooManyMethods \u2014 312 significant lines (blank, comment-only and punctuation-only lines excluded), 35 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":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"293c97f9142997f7b693060b38ab730ec35c5212c2a97e08600d83f1223f47ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/InternalChart.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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4dc9554a911fa7076927c3b82cc2f67f99879276c4228e2bfdab88e69a25860"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: XSSFSimpleShape: ClassTooLong \u2014 461 significant lines (blank, comment-only and punctuation-only lines excluded), 21 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":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2570bfede04ee84c439cb543870df51bc91666a1f7f50bf711314928a8cbeb9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Util/HSSFColor.cs: FileTooLong \u2014 576 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":"main/HSSF/Util/HSSFColor.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"acf1427089a186f8905fcef95ce628ae3d3ee6b58be9a440a7d5587bd32bfe74"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Workbook/CT_BookViews.cs: FileTooLong \u2014 574 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":"OpenXmlFormats/Spreadsheet/Workbook/CT_BookViews.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04aa48c5bab1ff110f0b151059a6b1d3c802fc068c51a225897eda5331f14275"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Functions/LookupUtils.cs: FileTooLong \u2014 572 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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32af53f5ceaa42127e1786b9b67c72028c676b98f7034cbb8022d91ae41671c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Wordprocessing/FormField.cs: FileTooLong \u2014 571 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":"OpenXmlFormats/Wordprocessing/FormField.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"440ea431cdc4c37cad0d627495171e340727c4a7e169bf9cad77c77dc2d25000"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UserModel/PresetColor.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":"ooxml/XDDF/UserModel/PresetColor.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"660c0b9405b361687b2a4994ab05a27fcc6f633180477f81ae18245d58e4b55a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XSSFDrawing: TooManyMethods \u2014 375 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":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9722880838eedd3f2296445b35d9024a989fe5664023acee5278884d6f348df0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Section: TooManyMethods \u2014 352 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":"main/HPSF/Section.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8082c5b1d872849812a6833bcd5ab5ee2289b088699b662743858019b0cecb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: XWPFTable: ClassTooLong \u2014 443 significant lines (blank, comment-only and punctuation-only lines excluded), 26 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":"ooxml/XWPF/Usermodel/XWPFTable.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cab2575b4b2a54b86e2a6c32572c95bd103d8b807520596439a8a658f894265"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Atp/FinancialAtpFunctions.cs: FileTooLong \u2014 553 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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23413e9335672fdd3267fa2c8a339f579057bdf6ff288282c7a6986378ac015"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XSSFCellStyle: TooManyMethods \u2014 605 significant lines (blank, comment-only and punctuation-only lines excluded), 33 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":"ooxml/XSSF/UserModel/XSSFCellStyle.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fcc892c873b72362891431c63e1933cf95fc35e3341682b86b72ef5ea74ba18"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SheetUtil: TooManyMethods \u2014 467 significant lines (blank, comment-only and punctuation-only lines excluded), 33 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d0f42d23eec3930bb53684c80e1ae3c1bc1641a20fa7eb35b85bcb053c2a387"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NCellRange: TooManyMethods \u2014 224 significant lines (blank, comment-only and punctuation-only lines excluded), 33 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":"main/SS/UserModel/NCellRange.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb532d87c5c4f8c777e5ab33076b95ea57aeacd31e44eefa367472ac41b53a4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_Tbl: ClassTooLong \u2014 428 significant lines (blank, comment-only and punctuation-only lines excluded), 21 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":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5365f42e06631eeb02d5ab6a3f988f26c0f5b362145215deab941c068cbcac38"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CT_TextBodyProperties: TooManyMethods \u2014 497 significant lines (blank, comment-only and punctuation-only lines excluded), 32 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":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2084288db5635238321cf550f367821b7fda7c7b9f161c0f3ed0f75d09e9e936"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XWPFTableCell: TooManyMethods \u2014 211 significant lines (blank, comment-only and punctuation-only lines excluded), 32 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":"ooxml/XWPF/Usermodel/XWPFTableCell.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a06a9a605b143141595abbc28594cb9e99423ac08b379cf004cc3133d50d946"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PackagePart: TooManyMethods \u2014 200 significant lines (blank, comment-only and punctuation-only lines excluded), 32 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":"openxml4Net/OPC/PackagePart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a161023a3847788bdd18e694d1379b9da5f2b326ff2002f4d6e13bb40b976acc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BaseXSSFEvaluationWorkbook: TooManyMethods \u2014 157 significant lines (blank, comment-only and punctuation-only lines excluded), 32 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":"ooxml/XSSF/UserModel/BaseXSSFEvaluationWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a380988d8945a14e11ca3e9703f9963b9476bb08e51eba11cb5136570e96708"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XDDFCustomGeometry2D: TooManyMethods \u2014 133 significant lines (blank, comment-only and punctuation-only lines excluded), 32 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":"ooxml/XDDF/UserModel/XDDFCustomGeometry2D.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0d4a18c688f519f5c021df686c3302dd81655a3c9579d43ae34c5feaa69532"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PresetColorExtensions: ClassTooLong \u2014 424 significant lines (blank, comment-only and punctuation-only lines excluded), 2 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":"ooxml/XDDF/UserModel/PresetColor.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3068827bc8dd56e71348e730c20b100571d01906da05080e58a5bb0debd7c541"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DataFormatter: ClassTooLong \u2014 421 significant lines (blank, comment-only and punctuation-only lines excluded), 27 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":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd2491ec4844f3ff929c23746999f7aebd3dba75e54cf108355aff0efdd3ab03"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Record/ExtendedFormatRecord.cs: FileTooLong \u2014 526 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":"main/HSSF/Record/ExtendedFormatRecord.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c0ed41dc02fee4eee5b543b5ade41050abcc8d3001d31fefcca3893a554949"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Format/CellNumberFormatter.cs: FileTooLong \u2014 524 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":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb585302623a59346009f718dcf2d998072e299a4b734734050a68149915089"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Record/EscherAggregate.cs: FileTooLong \u2014 512 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":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf43cc31616d78aed0932e3ff6e86f60276093b3098dcb2568a1245f53ccfb6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Util/SheetUtil.cs: FileTooLong \u2014 512 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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc95cf9282548b08dc9f6ea0740d478bc0f8dc70559a677ce41999bd17b24b63"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CT_Stroke: ClassTooLong \u2014 406 significant lines (blank, comment-only and punctuation-only lines excluded), 2 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":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8867c50c2001875d9a5d732f74d621db3ce982c79579db3e28abdfa7f5bf2a94"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Formula/FormulaShifter.cs: FileTooLong \u2014 507 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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0128ad6f07b73edfd51cdce7c0b5354b4cc1106547db8ca2bb49fe6ad65a3e05"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Model/StylesTable.cs: FileTooLong \u2014 507 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":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"716c2c2896e207ae8ed2f40f9716380f6fafcc3e845c842197ad526406947267"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FunctionEval: ClassTooLong \u2014 404 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":"main/SS/Formula/Eval/FunctionEval.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"086bb2a2ca1924d253211b0afc5aa4496d13f483ae4a9b30d08e42490f9aaaf4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Formula/WorkbookEvaluator.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":"main/SS/Formula/WorkbookEvaluator.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4086da4d6f0a1ea2baba2a675df79f93e15a25be54405825a70b6b622ad94c96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): main/SS/Formula/FormulaShifter.cs:597-622 | main/SS/Formula/FormulaShifter.cs:634-659 \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 \u0060main/SS/Formula/FormulaShifter.cs:597\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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b2c39764640aad3a465efe89cf212a9beddc59d4a5ab3fd86540c9545fd5bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): main/SS/Formula/FormulaShifter.cs:783-808 | main/SS/Formula/FormulaShifter.cs:949-974 \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 \u0060main/SS/Formula/FormulaShifter.cs:783\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":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"30f1b1b0bef35e58b484596c33dd949ab3036457c4a66746bbf1fbf6cbd5fc0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): main/SS/Formula/Functions/LinearRegressionFunction.cs:173-193 | main/SS/Formula/Functions/XYNumericFunction.cs:180-200 \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 \u0060main/SS/Formula/Functions/LinearRegressionFunction.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":"main/SS/Formula/Functions/LinearRegressionFunction.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"63e62abfc5ee460e1b76c41fb30c05e0f9bd2d2ba4a349aac180f3fadae6ec1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): main/SS/Formula/Functions/LookupUtils.cs:709-729 | main/SS/Formula/Functions/LookupUtils.cs:777-797 \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 \u0060main/SS/Formula/Functions/LookupUtils.cs:709\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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ca0e7630a851d469db70748b08a211fc38f29660046fa496009f5f53954f48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:190-209 | main/HSSF/Record/Aggregates/PageSettingsBlock.cs:408-427 \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 \u0060main/HSSF/Model/InternalChart.cs:190\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a7ffefd2485938cdcbad8d70316ab89eda186e2fc505b80f4c1fcd695b08662"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): main/HSSF/UserModel/HSSFOptimiser.cs:96-116 | main/HSSF/UserModel/HSSFOptimiser.cs:308-327 \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 \u0060main/HSSF/UserModel/HSSFOptimiser.cs:96\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":"main/HSSF/UserModel/HSSFOptimiser.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b1dc9f5bc23f3898f27d4ec32c68acafe00afc5ccbe8fe29f13a2e2e39ae6e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): main/SS/Formula/Functions/ArrayFunction.cs:127-146 | main/SS/Formula/Functions/ArrayFunction.cs:151-170 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060main/SS/Formula/Functions/ArrayFunction.cs:127\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/ArrayFunction.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a4a9cb4fd326e1086cef194a6c343f68d871dc48865e165b905294d8d63296c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): main/SS/Formula/Functions/Count.cs:53-72 | main/SS/Formula/Functions/Counta.cs:49-71 \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":"main/SS/Formula/Functions/Count.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a888f9e7cf533a26567ea975c38f17738535b556f8790224fd33ea4824888cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): main/SS/Formula/FormulaParser.cs:745-763 | main/SS/Formula/FormulaParser.cs:830-848 \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 \u0060main/SS/Formula/FormulaParser.cs:745\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":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"a82aa59a4db1745f521c6e98ef0b69e09fd442e199cbcd03a286194fd999e974"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): main/SS/Formula/Functions/Matrix/MatrixFunction.cs:184-202 | main/SS/Formula/Functions/Matrix/MatrixFunction.cs:209-227 \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 \u0060main/SS/Formula/Functions/Matrix/MatrixFunction.cs:184\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":"main/SS/Formula/Functions/Matrix/MatrixFunction.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7f9d31a2dd2d23a1de7f226ae872d793a5139615deda00ade9d993e828b9683"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): main/HSSF/Record/BlankRecord.cs:155-172 | main/HSSF/Record/CellRecord.cs:95-112 \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 \u0060main/HSSF/Record/BlankRecord.cs:155\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":"main/HSSF/Record/BlankRecord.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb056cde5cc1a9aeddd648d0c78cc06d8a75748286286150b1d85a0273fd6dcf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): main/SS/Formula/Functions/Complex.cs:52-69 | main/SS/Formula/Functions/Complex.cs:71-88 \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":"main/SS/Formula/Functions/Complex.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"05218eaeed6d058e5094488513147f1748050605df5ea7807a19e7bf5b74b0e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): main/SS/Formula/Functions/Dec2Bin.cs:67-84 | main/SS/Formula/Functions/Dec2Hex.cs:72-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060main/SS/Formula/Functions/Dec2Bin.cs:67\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":"main/SS/Formula/Functions/Dec2Bin.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"f78db964c43590d335fe1490d0c69bd690016fd2548bdc3a39c4a6471b4483cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): main/HSSF/Model/InternalWorkbook.cs:2725-2741 | main/HSSF/Model/InternalWorkbook.cs:2765-2781 \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 \u0060main/HSSF/Model/InternalWorkbook.cs:2725\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":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":2725}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c1badf5fff755f18ed0aaa944490492fbf9204d97480fde5aac6d8db99041f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): main/SS/Formula/CellCacheEntry.cs:60-76 | main/SS/Formula/EvaluationCache.cs:198-214 \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 \u0060main/SS/Formula/CellCacheEntry.cs:60\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":"main/SS/Formula/CellCacheEntry.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9e69997b8ba9cb78f5243d249e82b3de4f5d3635700206fcbb8bc9d2fcd30a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs:142-158 | main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs:162-178 \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 \u0060main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs:142\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":"main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"94bbf963fd57c9d08c697cc78f52f505dd82c3ac47ef7c9e52e9c718181439ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): main/SS/Formula/Functions/ArrayFunction.cs:75-91 | main/SS/Formula/Functions/ArrayFunction.cs:97-114 \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 \u0060main/SS/Formula/Functions/ArrayFunction.cs:75\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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":"main/SS/Formula/Functions/ArrayFunction.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3225038453eea028bd600bee7bcf90bc003ef9e01ce86310bbef7ff4e5110e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): main/SS/Formula/Functions/Dec2Bin.cs:94-110 | main/SS/Formula/Functions/Dec2Hex.cs:99-115 \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 \u0060main/SS/Formula/Functions/Dec2Bin.cs:94\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":"main/SS/Formula/Functions/Dec2Bin.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4b4ca88c56c543eae9c0df61040c3992cdab86a6ecb667edfa992a01752603"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): main/SS/Formula/Functions/DollarDe.cs:27-43 | main/SS/Formula/Functions/DollarFr.cs:21-37 \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":"main/SS/Formula/Functions/DollarDe.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1399769d0537d968d2547fb05814978c3b61310cad3a81c8eed135d711552cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:219-234 | main/HSSF/Record/Aggregates/PageSettingsBlock.cs:437-452 \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 \u0060main/HSSF/Model/InternalChart.cs:219\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"979cd6c03904bd4ebc592fab97cfd890e0ad7a43f8751f0099ab7e87a4e82190"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): main/HSSF/Model/RecordOrderer.cs:160-175 | main/HSSF/Model/RecordOrderer.cs:382-397 \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 \u0060main/HSSF/Model/RecordOrderer.cs:160\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":"main/HSSF/Model/RecordOrderer.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61786d2f4fee8b738bd0c800680d5ee53c6709202c21d8dfd27b82135f2e76d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): main/SS/Formula/Eval/PercentEval.cs:34-49 | main/SS/Formula/Eval/UnaryMinusEval.cs:37-52 \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 \u0060main/SS/Formula/Eval/PercentEval.cs:34\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":"main/SS/Formula/Eval/PercentEval.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"354c756a14110c0fcf4b322d0bf4e1bf0dd9ae67c67ede68693a82b046ef2343"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): main/HSSF/Record/Aggregates/Chart/ChartSheetAggregate.cs:93-108 | main/HSSF/Record/Aggregates/ChartSubstreamRecordAggregate.cs:79-93 \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 \u0060main/HSSF/Record/Aggregates/Chart/ChartSheetAggregate.cs:93\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/Chart/ChartSheetAggregate.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"14752b8c1a12cf3e9feaa2e8037f9db94a9cd5c5eb0999ef1afd00ea36a8416b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): main/SS/Formula/Atp/XLookupFunction.cs:78-92 | main/SS/Formula/Atp/XMatchFunction.cs:53-67 \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 \u0060main/SS/Formula/Atp/XLookupFunction.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. 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":"main/SS/Formula/Atp/XLookupFunction.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff38128394309dc4fb5521be5a5d00f7c1742e74460ce41d21458cb3d53aeae7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): main/SS/Formula/Functions/LinearRegressionFunction.cs:142-156 | main/SS/Formula/Functions/XYNumericFunction.cs:144-158 \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 \u0060main/SS/Formula/Functions/LinearRegressionFunction.cs:142\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":"main/SS/Formula/Functions/LinearRegressionFunction.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffac38e04f58cd093059aa0a9a1635cb4431aebd0423bb65f92252c1220e6d56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): main/SS/Formula/Functions/LookupUtils.cs:467-481 | main/SS/Formula/Functions/LookupUtils.cs:526-545 \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 \u0060main/SS/Formula/Functions/LookupUtils.cs:467\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":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c1d65ba5c96b65375308c9c3503f57f6f58f39739af1889601371d192e3d50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): main/Util/BigInteger.cs:3311-3326 | main/Util/BigInteger.cs:3331-3345 \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":"main/Util/BigInteger.cs"},"region":{"startLine":3311}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab5a7e8242f27dc23bf64418670447e9d210849f93740fe86c86107eef463835"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): main/HSSF/Record/Aggregates/CFRecordsAggregate.cs:338-351 | main/SS/UserModel/Helpers/BaseRowColShifter.cs:55-68 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/CFRecordsAggregate.cs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a100fa45994e2345dd9a761baf290d0f92e993a1b854c51bfa26e00c2e068c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): main/SS/Formula/Functions/NormInv.cs:29-42 | main/SS/Formula/Functions/Standardize.cs:20-33 \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":"main/SS/Formula/Functions/NormInv.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d28c9a24b0b8fab8238d53e51e2c914feb97c58dc14beae1d732017e9d6a1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): main/POIFS/FileSystem/POIFSDocumentReader.cs:275-287 | main/Util/ByteArrayInputStream.cs:142-154 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. 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":"main/POIFS/FileSystem/POIFSDocumentReader.cs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"f99ab05373b0a13d625cad08ce0d6df9407f01a19764a4e1bf29aa498894f936"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): main/SS/Formula/Atp/XLookupFunction.cs:60-72 | main/SS/Formula/Atp/XMatchFunction.cs:35-47 \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 \u0060main/SS/Formula/Atp/XLookupFunction.cs:60\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":"main/SS/Formula/Atp/XLookupFunction.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba9d5a43ce328d054dbd234530cabfb21a6ed01c00107dac8f96f93493317859"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): main/SS/Formula/Functions/Mode.cs:54-66 | main/SS/Formula/Functions/StatsLib.cs:118-130 \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 \u0060main/SS/Formula/Functions/Mode.cs:54\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":"main/SS/Formula/Functions/Mode.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a7ad6e1d3c8f078cf79cc7e0255dfe5d5d8ac2076a6dee0e9515aa13bb5644"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): main/SS/UserModel/TableStyleType.cs:139-151 | main/SS/UserModel/TableStyleType.cs:165-177 \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 \u0060main/SS/UserModel/TableStyleType.cs:139\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":"main/SS/UserModel/TableStyleType.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f00064a3607fc57ad9280162443f9ed845133614b304a220dd261bfa96b424e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): main/SS/UserModel/TableStyleType.cs:191-203 | main/SS/UserModel/TableStyleType.cs:219-233 \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 \u0060main/SS/UserModel/TableStyleType.cs:191\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":"main/SS/UserModel/TableStyleType.cs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e8f14627c93972fe2176678ed1812e0ea8325551f979db3715d12ebd0c318ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): main/HSSF/Record/Aggregates/Chart/AttachedLabelAggregate.cs:91-102 | main/HSSF/Record/Aggregates/Chart/LDAggregate.cs:50-61 \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 \u0060main/HSSF/Record/Aggregates/Chart/AttachedLabelAggregate.cs:91\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":"main/HSSF/Record/Aggregates/Chart/AttachedLabelAggregate.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"285578ad1558d0d1fb5af2e13490cc2d5fb606a3642788c0e2330c59c4ec75dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): main/SS/Formula/Functions/Npv.cs:30-41 | main/SS/Formula/Functions/Numeric/NumericFunction.cs:66-77 \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 \u0060main/SS/Formula/Functions/Npv.cs:30\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":"main/SS/Formula/Functions/Npv.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b737e1b67d57f7e82a5ed33e6dce30b39c70965999c233f486e02df1d47232b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): main/SS/Util/ImageUtils.cs:250-261 | main/SS/Util/ImageUtils.cs:286-298 \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 \u0060main/SS/Util/ImageUtils.cs:250\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":"main/SS/Util/ImageUtils.cs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba71f90436821b77e3a31c7e9750ef0d20b147a11f945e6561f34f6ae1261c47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): main/SS/Util/PropertyTemplate.cs:367-378 | main/SS/Util/PropertyTemplate.cs:416-427 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060main/SS/Util/PropertyTemplate.cs:367\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":"main/SS/Util/PropertyTemplate.cs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd359b0c05e4cb29f7e47c7e776c611bab9ca04aaa3a32a9eabb81cd985d7b10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): main/SS/Util/PropertyTemplate.cs:743-754 | main/SS/Util/PropertyTemplate.cs:793-804 \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 \u0060main/SS/Util/PropertyTemplate.cs:743\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":"main/SS/Util/PropertyTemplate.cs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"f178c092ea597b3852999addb8a7cd45d724c4abdf3673c8271af49e01c0ebf0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): main/HSSF/Model/InternalChart.cs:593-603 | main/HSSF/UserModel/HSSFChart.cs:537-547 | main/HSSF/UserModel/HSSFChart.cs:774-784 \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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ba9a97be641477d9633b8308e918d7f8022f30e8dcd3677ccaa9292237e9f4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): main/HSSF/Record/Chart/AlRunsRecord.cs:87-97 | main/HSSF/Record/Chart/ChartTitleFormatRecord.cs:81-91 \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 \u0060main/HSSF/Record/Chart/AlRunsRecord.cs:87\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":"main/HSSF/Record/Chart/AlRunsRecord.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d674c723fb41c5975dd701bb0247d1638910b50ae331c9a6b23786fd304e5d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): main/POIFS/Crypt/BinaryRC4/BinaryRC4Decryptor.cs:69-82 | main/POIFS/Crypt/CryptoAPI/CryptoAPIDecryptor.cs:110-120 \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 \u0060main/POIFS/Crypt/BinaryRC4/BinaryRC4Decryptor.cs:69\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":"main/POIFS/Crypt/BinaryRC4/BinaryRC4Decryptor.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f5207286f59f0b50313fdb5e9b375d0e87bcabcee4b4f2ba4349e67d0b4130"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): main/SS/Formula/Atp/MRound.cs:49-59 | main/SS/Formula/Atp/RandBetween.cs:59-69 \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 \u0060main/SS/Formula/Atp/MRound.cs:49\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":"main/SS/Formula/Atp/MRound.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5d085f22741af0ad612cf0ba05b67e48ff9d96ed2aeb0e605b0295a1048600"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): main/SS/Formula/PTG/Area3DPxg.cs:81-91 | main/SS/Formula/PTG/Ref3DPxg.cs:82-92 \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 \u0060main/SS/Formula/PTG/Area3DPxg.cs:81\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":"main/SS/Formula/PTG/Area3DPxg.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ee1198dc5a5a78463feb8103618797dde4d52852f1f00229dfffc29b4c9e99f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): main/SS/Util/PropertyTemplate.cs:911-921 | main/SS/Util/PropertyTemplate.cs:948-958 \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 \u0060main/SS/Util/PropertyTemplate.cs:911\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":"main/SS/Util/PropertyTemplate.cs"},"region":{"startLine":911}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e9a65d680a73fe0c4a046c27a16699f84a309cea49e3378451665b83552dfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): main/Util/Arrays.cs:198-210 | main/Util/Arrays.cs:673-683 \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 \u0060main/Util/Arrays.cs:198\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":"main/Util/Arrays.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8642821dc42637f671491061b404fc9ff6b551452fbd99407a291ba22630047"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): main/HSSF/Model/InternalWorkbook.cs:1733-1742 | main/HSSF/Model/InternalWorkbook.cs:1914-1924 | main/HSSF/Model/InternalWorkbook.cs:1988-1997 | main/HSSF/Model/InternalWorkbook.cs:2000-2009 | main/HSSF/Model/InternalWorkbook.cs:2012-2021 | main/HSSF/Model/InternalWorkbook.cs:2024-2033 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1733}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f3078503a3282fe6ce1e026484387fa0fbe57b8b734674dd3e03560cb8f9932"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/DDF/EscherBlipWMFRecord.cs:288-297 | main/DDF/EscherBSERecord.cs:353-362 \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 \u0060main/DDF/EscherBlipWMFRecord.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. 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":"main/DDF/EscherBlipWMFRecord.cs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"9daeb5551b1add7470930c7fe4ffbbff4acf61d2dbca8b1b3e34188274502971"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/DDF/EscherDggRecord.cs:111-120 | main/DDF/EscherSplitMenuColorsRecord.cs:72-81 \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 \u0060main/DDF/EscherDggRecord.cs:111\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":"main/DDF/EscherDggRecord.cs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12a851d7c51e1435a0c84b5a2353b9e61d7f78459ab0abf1577dacc1c114c04"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/HSSF/Record/Aggregates/Chart/DropBarAggregate.cs:36-45 | main/HSSF/Record/Aggregates/Chart/FrameAggregate.cs:37-46 \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":"main/HSSF/Record/Aggregates/Chart/DropBarAggregate.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"562666d154a7a6f9dfe50e36c5174a3fc98047b73fb6957e0c03e85f63a612f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/HSSF/Record/Chart/CrtLayout12ARecord.cs:139-148 | main/HSSF/Record/Chart/CrtLayout12Record.cs:133-142 \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":"main/HSSF/Record/Chart/CrtLayout12ARecord.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba8fc9e516c657c752dc771325b3bd496d86b4ffc5ac0208ba6e110cf474356f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/HSSF/UserModel/HeaderFooter.cs:61-70 | main/HSSF/UserModel/HeaderFooter.cs:73-82 \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 \u0060main/HSSF/UserModel/HeaderFooter.cs:61\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":"main/HSSF/UserModel/HeaderFooter.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef700f5d56e8bd978da40c4913ccdc45be3781a331b2bafdb772a9ec619a7f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/HSSF/UserModel/HSSFPolygon.cs:140-149 | main/HSSF/UserModel/HSSFPolygon.cs:163-172 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060main/HSSF/UserModel/HSSFPolygon.cs:140\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":"main/HSSF/UserModel/HSSFPolygon.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbc01bdff68d5d2e930484ee236b527e7d2a36e5d58eff8d3420a1fc1cd5c2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/SS/Formula/Functions/Dec2Bin.cs:139-149 | main/SS/Formula/Functions/Dec2Hex.cs:147-156 \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 \u0060main/SS/Formula/Functions/Dec2Bin.cs:139\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":"main/SS/Formula/Functions/Dec2Bin.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"734aa56c9e32229ad771ff22e4287c06d12fe0fc9837a5ca3d65f61b9b989665"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/SS/Formula/PTG/Deleted3DPxg.cs:49-58 | main/SS/Formula/PTG/NameXPxg.cs:55-64 \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":"main/SS/Formula/PTG/Deleted3DPxg.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"18b76a2787ab69a3634b19b0cf1ff8894b4fc2e22e843982f89bd39a46590c85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): main/Util/BigInteger.cs:1537-1546 | main/Util/BigInteger.cs:1608-1617 \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":"main/Util/BigInteger.cs"},"region":{"startLine":1537}}}],"partialFingerprints":{"codehealthFindingId/v1":"5804d2edba18bc5e0019eda5af81941c7be0a61b0789b9dd3ea7a965589c7359"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): main/HSSF/Record/Cont/ContinuableRecordInput.cs:107-115 | main/POIFS/Storage/DataInputBlock.cs:141-149 | main/Util/LittleEndianByteArrayInputStream.cs:126-134 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060main/HSSF/Record/Cont/ContinuableRecordInput.cs:107\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":"main/HSSF/Record/Cont/ContinuableRecordInput.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4d1040d0069c7be45ca8269583c20629c1b7993b0dba269d5e37a9ebdee43d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): main/HSSF/UserModel/HSSFChart.cs:517-525 | main/HSSF/UserModel/HSSFChart.cs:717-725 | main/HSSF/UserModel/HSSFChart.cs:854-862 \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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ad8e851d33511b44b3a06e981a096728a012357aef28ef65068a25885403ead"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:406-414 | main/HSSF/UserModel/HSSFChart.cs:612-620 \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 \u0060main/HSSF/Model/InternalChart.cs:406\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20e91b271a6565e8d555c14ae552a0e91c23bbf1679b3adb7f1a12bea2a9e41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:493-501 | main/HSSF/UserModel/HSSFChart.cs:564-572 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f13c7e133a204937351741c7ed5f4ba67d7e5860a3a4c99adf110deab5e7fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:506-514 | main/HSSF/UserModel/HSSFChart.cs:577-585 \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 \u0060main/HSSF/Model/InternalChart.cs:506\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"b608d9588d3903d4dc51a48999d6398f13f9ee773a7fdfcdbb18c338bd1cbae1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Record/CFRule12Record.cs:413-421 | main/HSSF/Record/CFRuleRecord.cs:141-149 \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 \u0060main/HSSF/Record/CFRule12Record.cs:413\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":"main/HSSF/Record/CFRule12Record.cs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b854537e672cb26b431671764967ddf4e0a7d277be9b9b253712d87ce960bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Record/Chart/AlRunsRecord.cs:127-135 | main/HSSF/Record/Chart/ChartTitleFormatRecord.cs:121-129 \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 \u0060main/HSSF/Record/Chart/AlRunsRecord.cs:127\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":"main/HSSF/Record/Chart/AlRunsRecord.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ae3b64ac7b51720008fa7601f46d6a7279479068dbd6c0e0e4fd630b14f61a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Record/Chart/AlRunsRecord.cs:147-155 | main/HSSF/Record/Chart/ChartTitleFormatRecord.cs:141-149 \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 \u0060main/HSSF/Record/Chart/AlRunsRecord.cs:147\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":"main/HSSF/Record/Chart/AlRunsRecord.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2e2d64b9b812012bafbba452437cef8dd27ea65959f1bdfa8038a1cfd2ccab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Record/Chart/CrtLayout12ARecord.cs:61-69 | main/HSSF/Record/Chart/CrtLayout12Record.cs:153-161 \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 what the matched lines are: every one of them assigns one field to another, so the block is a hand-written mapper between two data shapes rather than behaviour with a helper inside it. Extracting one shared function only works if both sites map the SAME pair of types in the same direction \u2014 check that first, because inverse or differently-typed mappers have no single function they can both call. Where they do not, the moves that exist are a generated or reflective mapper, a common embedded/base type the fields live on once, or accepting the run and covering it with a test that fails when a field is added to one side only."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Chart/CrtLayout12ARecord.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0879059a8e52613bbdc6af8e48877e2845d94d4879e7ea114276bc6a78275ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/Record/Chart/CrtLayout12ARecord.cs:112-120 | main/HSSF/Record/Chart/CrtLayout12Record.cs:102-110 \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":"main/HSSF/Record/Chart/CrtLayout12ARecord.cs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"39355c089764b5c1e49790309388940312efed3f42cefd87c4fa2bd959304fff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/HSSF/UserModel/HSSFCombobox.cs:47-55 | main/HSSF/UserModel/HSSFPolygon.cs:60-68 \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 \u0060main/HSSF/UserModel/HSSFCombobox.cs:47\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":"main/HSSF/UserModel/HSSFCombobox.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"809ffa6d7a5b37609ed8d37dc1cb0d65df3f2049879465c1c6dbf6bb54d519cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/POIFS/FileSystem/DocumentFactoryHelper.cs:199-209 | main/POIFS/FileSystem/DocumentFactoryHelper.cs:227-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 \u0060main/POIFS/FileSystem/DocumentFactoryHelper.cs:199\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":"main/POIFS/FileSystem/DocumentFactoryHelper.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1374e512d58b9cf2da03276e1200e60a55a6a60bdf9a24a04080c88b8152dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/POIFS/FileSystem/NPOIFSStream.cs:237-245 | main/Util/OutputStream.cs:22-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 \u0060main/Util/OutputStream.cs:22\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":"main/POIFS/FileSystem/NPOIFSStream.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"906a9d13a5aa9648420493ab9d39bd51a9d9f29597f8745205535fc7782cce3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): main/SS/Formula/Functions/Text/Mid.cs:32-40 | main/SS/Formula/Functions/Text/Replace.cs:44-52 \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 \u0060main/SS/Formula/Functions/Text/Mid.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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Text/Mid.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"75008b6f28363a326b9fce0c39dc2786d81afb6d2bfcf6f916b432818d1b8832"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): main/SS/Formula/Functions/Db.cs:30-37 | main/SS/Formula/Functions/Ddb.cs:30-37 | main/SS/Formula/Functions/IPMT.cs:28-35 | main/SS/Formula/Functions/PPMT.cs:28-35 | main/SS/Formula/Functions/Syd.cs:30-37 | main/SS/Formula/Functions/Vdb.cs:30-37 \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 \u0060main/SS/Formula/Functions/Db.cs:30\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":"main/SS/Formula/Functions/Db.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"33235e5fb9416773de2e2f3caaeb812661b788315712075de35dc66b716404b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): main/HSSF/Model/InternalChart.cs:746-753 | main/HSSF/Model/InternalSheet.cs:1190-1197 | main/HSSF/Record/Aggregates/PageSettingsBlock.cs:323-330 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"aab7c6fc5337abbae8a2066802f2186d9d10a4f17aa9630a1cc249ed13933d73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/Common/UserModel/Fonts/FontCharset.cs:149-156 | main/SS/UserModel/FontCharset.cs:83-90 \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":"main/Common/UserModel/Fonts/FontCharset.cs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f3677a742b29f77f86dcbd2e48534e3ab975aad6304dddd31787f0bc5412a76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/DDF/AbstractEscherOptRecord.cs:232-239 | main/DDF/EscherOptRecord.cs:93-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060main/DDF/AbstractEscherOptRecord.cs:232\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":"main/DDF/AbstractEscherOptRecord.cs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb32d3254db4b28a27ec38189b9eff7c9a8c9d7ab6d95fd438e109fe7c17b4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/DDF/EscherClientAnchorRecord.cs:174-181 | main/DDF/EscherClientDataRecord.cs:112-119 \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 \u0060main/DDF/EscherClientAnchorRecord.cs:174\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":"main/DDF/EscherClientAnchorRecord.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee80a5ee66ccbd683dd2bfa0a2927e41e611108190826e825e38eebd10c86064"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/DDF/EscherMetafileBlip.cs:344-351 | main/DDF/EscherPictBlip.cs:278-285 \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":"main/DDF/EscherMetafileBlip.cs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"0061df058826f924aa832ade72bea3eb8ce3ed853ee77a305641bf95d780d13b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:431-438 | main/HSSF/UserModel/HSSFChart.cs:637-644 \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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90390b6e2ef1f7108a7ecf5662fba1d91c84adc48a71f598a22c3e08596d54e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:474-481 | main/HSSF/UserModel/HSSFChart.cs:680-687 \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 \u0060main/HSSF/Model/InternalChart.cs:474\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a48289b27ebf35f936098c2f06caee6cd61ebedec466ae8bf4b87a8ca8efeb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:659-666 | main/HSSF/UserModel/HSSFChart.cs:867-874 \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 \u0060main/HSSF/Model/InternalChart.cs:659\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeea326fbf6f6d93ebef0502f82a195ab618de78cea86df9a243f3b03f6ab15b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:762-769 | main/HSSF/UserModel/HSSFChart.cs:417-424 \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 \u0060main/HSSF/Model/InternalChart.cs:762\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"97765e7bc0ec6bbd860b0b971b985419cc2238f3e7cc2a78bcc79ecd630b1f7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:806-813 | main/HSSF/UserModel/HSSFChart.cs:400-407 \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 \u0060main/HSSF/Model/InternalChart.cs:806\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"18dd6e6fba1a371ef08ee382d8b987d57e72b5eea27ca5efce899da80eacf231"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:870-877 | main/HSSF/UserModel/HSSFChart.cs:882-889 \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 \u0060main/HSSF/Model/InternalChart.cs:870\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"712bb1cbb8999abe6191f4f94fc929ae93b014928b1e334edfb3a76bb710a360"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:883-890 | main/HSSF/UserModel/HSSFChart.cs:895-902 \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 \u0060main/HSSF/Model/InternalChart.cs:883\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":883}}}],"partialFingerprints":{"codehealthFindingId/v1":"78217a1d0f2211953510836d3c20a0f48c6f710515935b6409bf547fbc03a7a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/Model/InternalChart.cs:896-903 | main/HSSF/UserModel/HSSFChart.cs:908-915 \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 \u0060main/HSSF/Model/InternalChart.cs:896\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":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e3739d1fd5ed1610b1cd40473df10b7d5b2ad2bc95166b3b9e4c10c9dedc61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/HSSF/UserModel/HSSFChart.cs:735-742 | main/HSSF/UserModel/HSSFChart.cs:765-772 \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 \u0060main/HSSF/UserModel/HSSFChart.cs:735\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":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a270cd2f57e7176da7a8d2b3e20cc2fdfc78591199179e2ac8a3fd6e319cb13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/POIFS/Storage/DataInputBlock.cs:130-137 | main/Util/LittleEndianByteArrayInputStream.cs:115-122 \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":"main/POIFS/Storage/DataInputBlock.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"2724c283f95b6de2e4337a80f0f55f0966110eafecc0959e291239d3f862d3bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/SS/Formula/Atp/FinancialAtpFunctions.cs:560-571 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:613-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 \u0060main/SS/Formula/Atp/FinancialAtpFunctions.cs:560\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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5137b5aa98998108e56e969ab28a641f979753cae558c210d7c0fc4c66dc0de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/SS/Formula/Atp/FinancialAtpFunctions.cs:851-858 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:881-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. 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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa9ac72795505bb27860cfad03b53d6e8db849ae6947c69bb9721efa1788481"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): main/SS/Util/SheetUtil.cs:542-549 | main/SS/Util/SheetUtil.cs:563-570 \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 \u0060main/SS/Util/SheetUtil.cs:542\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":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"df008fdd8499435a2ced95be445749ea4d98b3e3ccabb2b281650ea75aad96a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): main/SS/Formula/Atp/FinancialAtpFunctions.cs:417-423 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:439-445 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:461-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 \u0060main/SS/Formula/Atp/FinancialAtpFunctions.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. 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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"55240afbfbdd8cc905cac701514edddad85f143140195856a691ec92b74aa14b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/DDF/EscherMetafileBlip.cs:94-100 | main/DDF/EscherPictBlip.cs:76-82 \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":"main/DDF/EscherMetafileBlip.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"40139cb743e3812ee03f781802eab67a593084d2c0a29fca2b19254db5650e93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/DDF/EscherMetafileBlip.cs:148-154 | main/DDF/EscherPictBlip.cs:121-127 \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":"main/DDF/EscherMetafileBlip.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"80ea0ea24d56c3c914d088dbab3d8eedc50effdefa57a43c7e8e620f4afab2c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/DDF/EscherSpgrRecord.cs:73-79 | main/DDF/EscherSpRecord.cs:83-90 \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 \u0060main/DDF/EscherSpgrRecord.cs:73\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":"main/DDF/EscherSpgrRecord.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"444f056fa647aa853de954ea2c77eae38533810d21d154f58a66dbc808a9510a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/HSSF/Record/Chart/AxisOptionsRecord.cs:108-114 | main/HSSF/Record/Chart/CategorySeriesAxisRecord.cs:72-78 \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 \u0060main/HSSF/Record/Chart/AxisOptionsRecord.cs:108\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":"main/HSSF/Record/Chart/AxisOptionsRecord.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e4f4d8c4aaf2415e590de8077961327c1b25c82c65dba828297c7134b79c8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/HSSF/Record/Chart/ChartStartBlockRecord.cs:83-89 | main/HSSF/Record/Chart/StartBlockRecord.cs:100-106 \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 \u0060main/HSSF/Record/Chart/ChartStartBlockRecord.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":"main/HSSF/Record/Chart/ChartStartBlockRecord.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c7e92445f5d69f38ae6694ffdf00f75a376b23199d43cbd9510f75c336a00b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/HSSF/Record/Chart/DataLabelExtensionRecord.cs:78-84 | main/HSSF/Record/Chart/DataLabExtRecord.cs:77-83 \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 \u0060main/HSSF/Record/Chart/DataLabelExtensionRecord.cs:78\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":"main/HSSF/Record/Chart/DataLabelExtensionRecord.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a0ffca26dc0640ab99aba8215c881e49521e11dacefeb7d4b4f8eef0963f46"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/HSSF/UserModel/EscherGraphics.cs:245-251 | main/HSSF/UserModel/EscherGraphics.cs:398-404 \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 \u0060main/HSSF/UserModel/EscherGraphics.cs:245\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":"main/HSSF/UserModel/EscherGraphics.cs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1ed807f39754a07b9e865a817def9670071e88e6e45758d50b76a9ce5e28cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/POIFS/Crypt/BinaryRC4/BinaryRC4Encryptor.cs:88-94 | main/POIFS/Crypt/CryptoAPI/CryptoAPIEncryptor.cs:42-48 \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 \u0060main/POIFS/Crypt/BinaryRC4/BinaryRC4Encryptor.cs:88\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":"main/POIFS/Crypt/BinaryRC4/BinaryRC4Encryptor.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1e792dc43292e8544ddcd43ab64e0fdc72f3d9f7e3cc4302a39c188c686098"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/SS/Formula/Atp/FinancialAtpFunctions.cs:32-38 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:53-59 \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 \u0060main/SS/Formula/Atp/FinancialAtpFunctions.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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"af8a56c641a046a070e0155a5c329d7c440ed93daed3dbc7c788bc233c876640"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/SS/Formula/Atp/FinancialAtpFunctions.cs:74-80 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:99-105 \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 \u0060main/SS/Formula/Atp/FinancialAtpFunctions.cs:74\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3d4d94aedb42e63f6885070acab17a68c6a9a258bc78273a9a534fbaf43123"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): main/SS/UserModel/IndexedColors.cs:229-235 | main/SS/UserModel/IndexedColors.cs:237-243 \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":"main/SS/UserModel/IndexedColors.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"59112426823b999d9b1466c09d418b1c78c72c70f6fc4a6eb4805903830161fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 23): main/SS/Formula/Atp/FinancialAtpFunctions.cs:145-150 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:169-174 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:193-198 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:217-222 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:242-247 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:267-272 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:293-298 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:317-322 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:342-347 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:368-373 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:392-397 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:483-488 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:506-511 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:529-534 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:552-557 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:582-587 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:605-610 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:631-636 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:659-664 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:735-740 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:763-768 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:791-796 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:818-823 \u2014 all 23 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 \u0060main/SS/Formula/Atp/FinancialAtpFunctions.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. 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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"63e22160d4ba9668d3023029b3591ee6be63340bc1a1f02ef40fa34b4dca9d38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/DDF/EscherClientAnchorRecord.cs:195-200 | main/DDF/EscherClientDataRecord.cs:124-129 \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 \u0060main/DDF/EscherClientAnchorRecord.cs:195\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":"main/DDF/EscherClientAnchorRecord.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b212987b044b4a6c56e58a1edab7ac3bb68e4b95a4a847db269539474e5027"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/HPSF/ClassID.cs:238-243 | main/HPSF/ClassID.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":"main/HPSF/ClassID.cs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6fb170b262581dd6385f71309e0981f991a073d96407a6f6e5ec4fdc5f66191"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/HSSF/Record/Chart/ChartEndBlockRecord.cs:90-95 | main/HSSF/Record/Chart/EndBlockRecord.cs:95-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060main/HSSF/Record/Chart/ChartEndBlockRecord.cs:90\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":"main/HSSF/Record/Chart/ChartEndBlockRecord.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f81dd5af500a8eddd267a8159d0e74bccd459bc209dbbc20a1ab5556cb2606d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/HSSF/Record/EscherAggregate.cs:619-624 | main/HSSF/Record/EscherAggregate.cs:639-644 \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 \u0060main/HSSF/Record/EscherAggregate.cs:619\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":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"33033a53585731cbc201b6eb21f2fdcff2dd92998a4af109cbdb3511e257c161"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/HSSF/UserModel/HSSFPolygon.cs:87-92 | main/HSSF/UserModel/HSSFTextbox.cs:95-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":"main/HSSF/UserModel/HSSFPolygon.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"4367cb92a4124013fb5dbf3f27479a79d92b5cc378ffdf9b33893c4e95ed4415"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/SS/Formula/Atp/FinancialAtpFunctions.cs:683-688 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:709-714 \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 \u0060main/SS/Formula/Atp/FinancialAtpFunctions.cs:683\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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"078a5610733318fc416480b6ff86c662dbfcd4140f378eaf3d6e17364f8e0900"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/SS/Formula/Atp/FinancialAtpFunctions.cs:748-753 | main/SS/Formula/Atp/FinancialAtpFunctions.cs:776-781 \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 \u0060main/SS/Formula/Atp/FinancialAtpFunctions.cs:748\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":"main/SS/Formula/Atp/FinancialAtpFunctions.cs"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"cddcca765e4ee50d4114e15411c3ca95580c79783a8141ad63f0c7abc7af238e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): main/SS/Formula/Functions/Index.cs:151-156 | main/SS/Formula/Functions/Var3or4ArgFunction.cs:35-40 \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 \u0060main/SS/Formula/Functions/Index.cs:151\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":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ac98343166778cc90318131473f2588f0774ada7a0feaa4085b5998cb6c9af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): main/DDF/EscherArrayProperty.cs:168-172 | main/DDF/EscherRGBProperty.cs:78-82 | main/DDF/EscherSimpleProperty.cs:139-143 \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 \u0060main/DDF/EscherArrayProperty.cs:168\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":"main/DDF/EscherArrayProperty.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d604b94f3308ad20054216c3255741c8ac930bd290ca6c6702f32557206837"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): main/DDF/EscherBlipWMFRecord.cs:326-330 | main/DDF/EscherTextboxRecord.cs:202-206 \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 \u0060main/DDF/EscherBlipWMFRecord.cs:326\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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":"main/DDF/EscherBlipWMFRecord.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab85ded49d56cb7cf5573b243e51c5f8868029e17663403cc43d66fff188f338"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): main/DDF/EscherMetafileBlip.cs:357-361 | main/DDF/EscherPictBlip.cs:289-293 \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 \u0060main/DDF/EscherMetafileBlip.cs:357\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":"main/DDF/EscherMetafileBlip.cs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"53738634b798af5791ae5c4b67b32f1f8dd0e8b991130b028dbfb77c9091ee6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): main/HSSF/Record/CellRecord.cs:117-121 | main/HSSF/Record/OldCellRecord.cs:116-120 \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":"main/HSSF/Record/CellRecord.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a9c9a7a3accd52413792250f53754ee080c324911452c8f4e834e65a7568285"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): main/HSSF/UserModel/HSSFComment.cs:285-289 | main/HSSF/UserModel/HSSFTextbox.cs:132-136 \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":"main/HSSF/UserModel/HSSFComment.cs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc25992facc87219bfa17f532455b009acd4ce7b574c9f8066ca0d9c5623fa6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): main/SS/Formula/Atp/WorkdayCalculator.cs:42-46 | main/SS/Formula/Atp/WorkdayCalculator.cs:47-51 \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":"main/SS/Formula/Atp/WorkdayCalculator.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3cbff98c7ac58a28e73a507195454cd1dc603b36036a02c4dc6cfbe9568cb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): main/Util/LittleEndian.cs:541-545 | main/Util/LittleEndian.cs:589-593 \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 \u0060main/Util/LittleEndian.cs:541\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":"main/Util/LittleEndian.cs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3f026ecfd8ca4d157755c55217553d5dd51302a9eff185bfc99ff7e33061ffb"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: NPOI.Core(net472): NPOI.Core(net472): abstractness 0.14, instability 0.00, distance 0.86 \u2014 zone of pain \u2014 concrete and depended on by 4 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bd465abe5ae53c19473f2788d47bcda3f5e79bbc3e5534a3acb6d4dfe9a0594d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_RPr (LCOM4 26): CT_RPr\u0027s methods form 26 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3975}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d728c721166e2a4912b978439945bd23ae8f6cb47eba42c355e001d133417c2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SignatureConfig (LCOM4 24): SignatureConfig\u0027s methods form 24 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c1e1f0064b1dca003540dd6a2260117058d1c64982671f811b74e3b37b7080"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Worksheet (LCOM4 23): CT_Worksheet\u0027s methods form 23 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Worksheet.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf4754c3145bff07ab89475fe7f91bee075ca6b095a4fd9a02d63d720b89612"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_RPrElt (LCOM4 16): CT_RPrElt\u0027s methods form 16 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"63a2d11323dab632be168caff583b6022183aece05d68084bb939206587841ff"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InternalSheet (LCOM4 12): InternalSheet\u0027s methods form 12 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac91beb5a83f3848422b3acd4b667ff1fe42993ee1a87e7b6053ea2e9ba0638b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_TextListStyle (LCOM4 11): CT_TextListStyle\u0027s methods form 11 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fa478b9eeae39528e24aed83f3ba496c8649134140649ab5c832a7f3c284174"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_PPrBase (LCOM4 11): CT_PPrBase\u0027s methods form 11 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":6117}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5a5276b816af0e925fb0867fc4533ef8df0c9e99597fca8c7db38233550273f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_LineSer (LCOM4 10): CT_LineSer\u0027s methods form 10 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"151b85cc444c9fd5babf5c753b31e011af8bdf5f4a2432faa0028664fb6df6e3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_ScatterSer (LCOM4 10): CT_ScatterSer\u0027s methods form 10 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/ScatterChart.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e65f0e1444241d075aaf6a0c8fbca9ab01ee263ff1cde429f9695300d62df0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_PieSer (LCOM4 9): CT_PieSer\u0027s methods form 9 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/PieChart.cs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"18553cb1857be554431e78246ebc03e1d1f4d7acc2cb6bd114157c8611eade82"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_TextBodyProperties (LCOM4 9): CT_TextBodyProperties\u0027s methods form 9 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"e732166721b42595c2de322c8991e2030197c6c7d284ced7a1ba6a2f556f62d3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_AreaSer (LCOM4 8): CT_AreaSer\u0027s methods form 8 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/AreaChart.cs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"64753bbd10895313ed73be6811a6c8b3d83161088c6e36a2ee1807c37465d093"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_BarSer (LCOM4 8): CT_BarSer\u0027s methods form 8 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"40c076b6558b02429ddcc154dae7ed86b8aa45267f2f9147473310e853eb959b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_RadarSer (LCOM4 8): CT_RadarSer\u0027s methods form 8 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/RadarChart.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0a9b958b42abae8bf5aece175b585923b1b6d7c4926c10233c79bbc87dec92"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_ShapeProperties (LCOM4 8): CT_ShapeProperties\u0027s methods form 8 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa63ee66357788d63209cd245e98e4c338f34783eaa8f45ae5d7b8bcd1929191"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_PivotTableDefinition (LCOM4 8): CT_PivotTableDefinition\u0027s methods form 8 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ceadeb87550c475817e7500f401f3a751a90597bffcd54f9a4ab2c0bdd137a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_ClientData (LCOM4 8): CT_ClientData\u0027s methods form 8 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/SpreadsheetDrawing.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eabc9bee91cdfa6f25d118041628803ad4dd11985e2f6a05c48a001b1104aec"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_BarChart (LCOM4 7): CT_BarChart\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/BarChart.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"8017654de69db45b1b304a721c2eb39e5b82f7173ed2435e70408a3722f862e4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_SolidColorFillProperties (LCOM4 7): CT_SolidColorFillProperties\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":1983}}}],"partialFingerprints":{"codehealthFindingId/v1":"24bd73fbb48cecd9b1827fc29133951ab45f0f5f2d9cce9d8d5c31dc57637606"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Workbook (LCOM4 7): CT_Workbook\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Workbook/CT_Workbook.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"f023288e6947c999be366cb4ddf947c6936af213afb6a98bbaf193193c83d2dc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Shape (LCOM4 7): CT_Shape\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0525119f9158c3bc153bb6eacab0c81bd65a58f6381987a5f8629f048f1b503"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Shapetype (LCOM4 7): CT_Shapetype\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":3701}}}],"partialFingerprints":{"codehealthFindingId/v1":"d566f72db0126afd0482ddac04cd3b92da3aab8fdafe86f3bb9c3850912bb784"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_PPr (LCOM4 7): CT_PPr\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"a22ff7bb18421dcacb346aa199291f668b31f5be26beae00dea239fffcf78917"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_TblPrBase (LCOM4 7): CT_TblPrBase\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":1144}}}],"partialFingerprints":{"codehealthFindingId/v1":"c88a1923974c18cdb2054fcf5c1a2750549c699a09590e36e8aa90004467dc42"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_TblBorders (LCOM4 7): CT_TblBorders\u0027s methods form 7 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2348}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ad363829c5c1ac59d0f1d4a6ef7052ab945c703c4c73bc14a70c153646cc9d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_PBdr (LCOM4 6): CT_PBdr\u0027s methods form 6 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3255}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd5ba2362e26e083beeb78dff07b30a1150b2c121c29f2b6cb7edf483c1df67c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: XWPFChart (LCOM4 6): XWPFChart\u0027s methods form 6 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFChart.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"38940510028e85d9f55e25bf69b71e6c2c5e0c962eaf282ff4ec9dafd728174f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: XWPFDocument (LCOM4 6): XWPFDocument\u0027s methods form 6 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8633b904efa76efcf25d1f1df74318c9361b2253f66693cc1c2755d35ab5a846"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_AreaChart (LCOM4 5): CT_AreaChart\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/AreaChart.cs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"56320397859bd500c2c1d6a6bce12ff0e3491b908c32ba3af8014010c4663627"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_LineChart (LCOM4 5): CT_LineChart\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d63102c51b7d46f51c00a0c561954eea133975faea003a6fe80be41acbcb7b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_RadarChart (LCOM4 5): CT_RadarChart\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/RadarChart.cs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ce31836dc8f12bd2a73f126b79a98150b6a4dd500ad8d6faa87c277a7541b3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_GradientFillProperties (LCOM4 5): CT_GradientFillProperties\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":2197}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec9fbd5dbc47aada686057166863bc59e585a284ef68334a17ea587b9c6a06fe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_ShapeStyle (LCOM4 5): CT_ShapeStyle\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeStyle.cs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c14926a72058e5db33f128a53605b2c1b93d3b98aa95eb2cbda2758ac932298"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_TwoCellAnchor (LCOM4 5): CT_TwoCellAnchor\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":1796}}}],"partialFingerprints":{"codehealthFindingId/v1":"5569f1c381e804686dfa23b38598c06758488783fbd4ebe908ba56bd2b3658e6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_ShapeStyle (LCOM4 5): CT_ShapeStyle\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/spreadsheetShape.cs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"149c34f40ffe0a416c88bad59a6db4e6825e2487c292ca2947a488d45288b858"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Font (LCOM4 5): CT_Font\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9dde2571085324abcdb8942288168ee2ef6f348b587cb2803608fbe659e248f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_SectPr (LCOM4 5): CT_SectPr\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2645}}}],"partialFingerprints":{"codehealthFindingId/v1":"dca3fd6504066a6b8c7a9bdf30087527bb375c6277aba55f80a03d583e17bae5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Spacing (LCOM4 5): CT_Spacing\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3488}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b9585db75610e62297ae9462131c87072333639e9bf50547b5bd05c6695054"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_TblCellMar (LCOM4 5): CT_TblCellMar\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2616}}}],"partialFingerprints":{"codehealthFindingId/v1":"5155cbfbc384b9fd1174301dfa89cd097043b7377e699e87953fded8a24598d7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: XSSFClientAnchor (LCOM4 5): XSSFClientAnchor\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFClientAnchor.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf514c238a7d1ba00f2a81fd4b71b7a4bfd6fe6b999d1d66f57eb4295409562"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_ScatterChart (LCOM4 4): CT_ScatterChart\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/ScatterChart.cs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde088c8099110079ee133150489b930b350e5bd92ec59a7220d84ce857f3390"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_BlipFillProperties (LCOM4 4): CT_BlipFillProperties\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":2872}}}],"partialFingerprints":{"codehealthFindingId/v1":"c77e7ab8afd7fce16d12067762b9f836abfbfb97699525651508724059680407"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Picture (LCOM4 4): CT_Picture\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/SpreadsheetPicture.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"997956ff82517c666faa8f399f3cf1461c90ae49af922876fee59a40fb7d9907"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_TextBody (LCOM4 4): CT_TextBody\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Text.cs"},"region":{"startLine":1515}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a934989ea262515b9b37bdbc6896a2449d04b1868347f62656f44f1a582e086"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Stylesheet (LCOM4 4): CT_Stylesheet\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cdb095314032780b59dbab00e1d23383af3aacec1d0259cf7f9f3877858bda2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_PatternFill (LCOM4 4): CT_PatternFill\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_PatternFill.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"3528458a8548e6a9f5a47739d70217dd8f0bcccba3414abbbf194c4aeba64f01"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Fonts (LCOM4 4): CT_Fonts\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Font.cs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca1959ce73da078a918ebf85d97f73eb7140acb77ac361ed8f298d4325ca83a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_Ind (LCOM4 4): CT_Ind\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":3747}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fdadc7c87958685a39b6dc5edd3643c2dd9f4dd768f3666873ea864c7beeabb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CT_SdtBlock (LCOM4 4): CT_SdtBlock\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f26bbeff5b898a70843472ed430f2c223c5f2f277cfa79d33f8792e46bf74e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EscherRecord (LCOM4 4): EscherRecord\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherRecord.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c7b065e4a3b90ee543af2c29af1b9b0d679e99521d703cbebd31fe863cd56f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HSSFShapeGroup (LCOM4 4): HSSFShapeGroup\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFShapeGroup.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf2bf677049e6082eedd3291fbf8ff76ed8ea3a42b3c31000863d401c0d3d1a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HSSFSimpleShape (LCOM4 4): HSSFSimpleShape\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSimpleShape.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee395dd23b8d69343bd18330748f835154456222c81cb9a4828ec1db7f43b49"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: XSSFComment (LCOM4 4): XSSFComment\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFComment.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f6c04b9dfe3b38b7dbee9dfff29d67586ea63fae7e29f093408979f227b70ba"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: XSSFWorkbook (LCOM4 4): XSSFWorkbook\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d8567e10d1af60f0cd2236b17f3ad7b111fd4b5471b79950eaad1bdd2904903"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ZipPackage (LCOM4 4): ZipPackage\u0027s methods form 4 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"af63caf63e55af6983f002996262f532ea80f5f6086351cb94a298e2d150e96a"}},{"ruleId":"D13","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0a8ec38601e5da8cc706ab8c35f345d408c3c5c2bb5323703a818f1c24ea44c9"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: ooxml/XSSF/UserModel/XSSFWorkbook.cs: ooxml/XSSF/UserModel/XSSFWorkbook.cs changed 2 times in last 90 days, max complexity 19. 1 of those changes was a fix/bug commit, 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":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"588baa7b21bddc9921a10bfa9c64527c1e226405cb73636ea53e124543ddfff4"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 22 significant file(s) lose their only recent owner: main/SS/Formula/WorkbookEvaluator.cs, main/SS/UserModel/DateUtil.cs, main/SS/Util/CellReference.cs, ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs, main/Util/IOUtils.cs, ooxml/XSSF/UserModel/XSSFFont.cs, ooxml/XSSF/EventUserModel/XSSFReader.cs, main/HPSF/VariantSupport.cs (\u002B14 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"355fc906d196a298d68098b53073c5e894a0cdb493241a5529f59aee05481a5d"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 12 significant file(s) lose their only recent owner: OpenXmlFormats/Wordprocessing/Paragraph.cs, ooxml/XWPF/Usermodel/XWPFTableCell.cs, main/SS/UserModel/Workbook.cs, ooxml/XWPF/Usermodel/XWPFAbstractNum.cs, ooxml/XWPF/Usermodel/XWPFPictureData.cs, ooxml/POIXMLPropertiesTextExtractor.cs, ooxml/XWPF/Usermodel/XWPFChart.cs, main/SS/UserModel/CellStyle.cs (\u002B4 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fe336f80978b79906642e2c01f4d4bed9561f61f571b51037181656551a3165c"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 5 significant file(s) lose their only recent owner: main/SS/Formula/PTG/Ptg.cs, openxml4Net/OPC/Internal/Marshallers/ZipPartMarshaller.cs, main/SS/Formula/PlainCellCache.cs, openxml4Net/OPC/Internal/MemoryPackagePart.cs, main/SS/Formula/FormulaCellCache.cs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"343b767471e7ae28e3847940130fc67a3c525a8f395517549afbb4a0dc0fe8f7"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 3 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (53 single-owned of 982 analysed files in total, counted over production source files of roughly 100 lines or more, excluding tests, vendored, generated and example/demo trees, largest first). They are anonymized user #4 (1 file(s)), anonymized user #5 (1 file(s)), anonymized user #6 (1 file(s)) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/AreaChart.cs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0030d2463661cecb7b798c9769aaa12f021a3929fb7cd32c7405d06e98f5c8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeProperties.cs"},"region":{"startLine":2272}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99cd21e91db39c27c5fbce519fd17cc9aef889dece85f4ec21a24d7095c6a51"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Cell.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12eda4a644c4448b62fea4a9a07a89d7fb6980721c419cf23ba6ed8bb7803a8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/SharedValueManager.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"d66dea098f29c8369bf807c66cdd3e2755378ef0e7f50977665cfcd29681f0ec"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"99df7dc2abbe841557fe00a426d9cf6f6f1b2f57a10948d98cbf939c86cced82"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFRow.cs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad179dd28bc94aa1e3eb2a2cd3b5605577557fc64109be94e1b297e7c0297c0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/OperandResolver.cs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a0b50023c912ba8e17924b6fb9129831d0738fe78f6f6268d873f83909fb50"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/AreaPtgBase.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"6605efc9285f2bdbe52c235332394518422eeb8ef5741689f6a4ebbc48232155"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"9106a5dae891c697b964db6370d851c4531bbf2ae544892a01f36a21ea4581f2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e39b1765beb99f6715150d76f362fb6c7738f146d9436e6c4bdece073b8ab82"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFPivotCacheDefinition.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"55911ff85ebd5af511b72b404fbda240e740c4811ca759d2efcc7313dd131603"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1bf6ceadd686fdaf0162bba322923093ea13480c18a974f91c24c1363d96ef7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/Util/XmlHelper.cs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1dc9453c2fc8977cb7cf015480df0e40614046f3a03c77c998155a37b659b2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/Aggregates/TestRowRecordsAggregate.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9dd73e2eafae935ea2c9648f0cf3ea09451269fe211049716ee895deed1a4bd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/LineChart.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b47ba9bb57b26d508e40fd7b952ac21d26e63e4bfd7f32bbe799749fbac31cb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"09e05b5b285a5453e3a637d0e423255f952e1ee3224d8e9c9de2f1d8e015e663"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":4922}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a297859804b17cc063cdec87fc48b9cf083fd30f9c6d27e35e1a9e5700ddb9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"34483a212cc20438da0f04462dd13a38fabb0edb633babc6a3d25ad3acb8e297"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":6134}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce7694ab3c83f44c053821fe6df5c5044f1cadecf7221b2e6da5a5bb49f0a97"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":6146}}}],"partialFingerprints":{"codehealthFindingId/v1":"af58d5b55578ae4d4670fc19c64520f62399f3b82489fed8804cbf950236dfd4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":6254}}}],"partialFingerprints":{"codehealthFindingId/v1":"9795dee1360199547c135f0317c63194521c8ee8cb2dd0bd336e996a6b7c17e1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":6266}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b7ce3314c432d28b3601b5b490671645ddeb564a2e3d8604913b63a0dd695a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":3501}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1695dc643d565b924a9b82760b282186845f9f38ec80457b495611390599535"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/SharedValueManager.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2b73c76ffa5d5c8db4d9be9954b1d9474f266be17871ce70f46c1921c6b611"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"e02270553dbb6a7ca5b06288d3dfa574cb5a1950e1a796674ebc6faab209f3ee"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"35ece049a9981f218911e8019eb68eccb2ab126c30de0e9cb02a8ba0a8c7d4a2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ExternalNameRecord.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"45baab365bfd53231cb198563161a3f5469cd405cea68e60b032c46a67814883"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e90e223e2720d68edc57cc5db51a5064fc34d39dc7797411f5022262cb431bb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":878}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0cde018cc6340daee5ac0d2ebf4a981295204346130d3df5e1efa5e2be285a3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/SignatureFacet.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a662b889dabe54097c517b731eaa9327ace2c83114a2536ea805246e276c066"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/SignatureFacet.cs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2345298ae7b23b00e8ff261e7abfaad151c9e5ebbc3a305d4479e980db9ded2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"77e9ea07df6ec68b958282dab48993102c9d5455abd778f8e9062982fa3ad93c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"af30019487d5ab650425fb104cf842aa5449d725375b1ec2a2115396b489be46"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"e50ce50632b18bf66c1b5553cc8b2b664b3600a70af9a4262f6e611f0f4a7cbc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7bbbb673e3cba5ad160d645946d452248f08376fb6e9884bdc1e7ba3a23749b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"95d083c0acdf9a572b32f1be1d72c193848129487cc64a87d322ec62d8f8e952"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"cac2ba84ed39f11e61e06e4283c1f0f8a7f5ea094fccb1491dc1bdd14eb335ef"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7a377c714ef51dda597653ccf2188782f91eb8e5d10a4b61a49b14892b4efe4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d6cdca6c0546ddb183f566c0aa42d19714f10d25b177d2bfbacd95193df969b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFObjectData.cs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"7997a541c977e693043708793f576a8a319b172f11d019e58337eab58bf2b3b4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6618}}}],"partialFingerprints":{"codehealthFindingId/v1":"9afbef6c45595e1022895cb6f98d79630547a4f98da9ac2999c22c6048c28767"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFComment.cs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"dff853950a9d955369e5d4adb8d0a2de84e65fa2e7186406aa682a7a2f81beac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/NIO/TestDataSource.cs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"b140d454bb1e3e498d0679e3810db5187d1b1cfc17cb7e9e3e3643d0c0b33bb9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Eval/TestMultiSheetEval.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"de112556835399ad4fbb7c0f8a2921ad062d3aea767662fd27a6f19231beaab5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Util/NumberComparingSpreadsheetGenerator.cs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"459050e5dd5cc58a3e5b26236694005b2dec64bcd47ba013d87b7b0e436df378"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"3af9db5c40ca81313ba505917a4b6baae4bd43616a722ec6ca84894dfd7dd808"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"0211d10fa225a4c289e189279ffa86d76a2b7f0da5b486ecf4bc2380b33c44ac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestMultiSheetFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"f12e265555ba302bdda364499828d8bb49909b57cc7fa5418113dc9796656b91"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"e29a421371f71e50df2ab48d320f93cf9ed2c4bfe17b5ae28f46b0ff7722d1f8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/ScatterChart.cs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"193a0caaa528790b6bf8dcb39e4f2e89d13f95660b29496c5d43dbe8ad5c8236"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3873}}}],"partialFingerprints":{"codehealthFindingId/v1":"7786debe2d3d83e8ea902435b41f8ca17be68fe67e68f5b2c6e9451dd32e6be4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3887}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d58f8b642a64d22ce0fb70f74c810386c438a580d0a9d3f2f32b225168dcd9c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3901}}}],"partialFingerprints":{"codehealthFindingId/v1":"85e081ec9b7b16a2e0534c3e852ba4aa007153051d030983bd8559e5ef4f5a28"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3915}}}],"partialFingerprints":{"codehealthFindingId/v1":"3496322c2ea0a93a1f9cb6d1f5142442f5d0e3073902bd107b1d4d984e06b3c1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3929}}}],"partialFingerprints":{"codehealthFindingId/v1":"131b4ef68ee05a3141b3a78f9c2391473d036b4059d3a6866c0e1099c89cbbec"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3943}}}],"partialFingerprints":{"codehealthFindingId/v1":"b586d1740846288071d3ff5d46f621ea23b33f1f4c6edf7ae91018e7175122e7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeGeometry.cs"},"region":{"startLine":2277}}}],"partialFingerprints":{"codehealthFindingId/v1":"e16e6a5f476e7f1dadb0c91672a5be4b1fc1fc153c323951f57e9c12db0b1d86"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeGeometry.cs"},"region":{"startLine":2292}}}],"partialFingerprints":{"codehealthFindingId/v1":"f95986afa3871d016669624f1a3f30ce54b66f992efcfb8c478c58cc43e9106d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":6521}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b48ce01b9b9a11cad2127c1d2c5c1336d5d97479540e2400b600b3a957c4966"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":2433}}}],"partialFingerprints":{"codehealthFindingId/v1":"180496f2b435f8ba5d1f650b8e06f72f25b9bbcc8dec4b6a11fe98b758c9cc97"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":5985}}}],"partialFingerprints":{"codehealthFindingId/v1":"6294e7880cb0fb9af13cd399de231b7ea901f233332b5030939d56f60792254e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_SheetPr.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"87676c69367511bdecde6fc715d7cf80d0348aed165bfa804a63fbbb2f2fff41"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Fill.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"465a7a8ec67c21d76ab557d3b8d47c791ae046244cae46aacced2ec46ed0e573"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a379d47102f4bb95b8449dc59df12f72d742dcedf7997befee279cd714df5ab"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Xf.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d6f7f738dac551b507a3489769734757791c52e861a72ca48cde853e4a91e5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/SpreadsheetDrawing.cs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b613085ce92496119f266e68a6c46f66e4139f93647e4dd30f74ed0a856038"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b9c582fd390f9e71bb20d2220c81f370b94b9da8a23a761ecc7877838e92b62"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb5ad9c06149deee046211d83bfc706f413ef04edd346d9766dfd1749845362d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e0ce81a2758bbd09a7679697cd80af1750623bb48ccd7ca30a01c5189e5d07d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"397cd7dcde5ae38258d3a9512b3526c665b57bf0bcc5708abffaf782fd245de9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b66c8ba269a46facc547c8d0fe23217bd10f49e649ae22e8714543af355294a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":3151}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d3fba4a9008eeb78ce92ffa3705ee9ba6415a4ca3385c5e25d4b69ee7689ec5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":7296}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aaac160c40c5d954ed6713e6cc026feac687910f4e3192440e8bf10f0e456ba"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Styles.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"59af4a1f6659499e1746206aaf38fe5782c436f665549cee2e654959eff12142"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4201}}}],"partialFingerprints":{"codehealthFindingId/v1":"0480d7026ee24dd71df7d29e51119be16612f235b064c4b02f52fa17155094fb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherContainerRecord.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4a54481e4b6bc80716b89bda6e5f9529fd92343643d3543f7e749d9c205995"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherDgRecord.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff81e51c05aaf96b4aec809c7c4dc75f8f8e21349a0cae099e3438c06fc97a4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherDgRecord.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97561e9a80c5aeee09744b255f038f40d573c69a75046e4e05bd571c7b22f5f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherDggRecord.cs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7033a18a891af98a9df8b1e7c9f8bcd24ef5bc2d63897fe652d24b03f663a99"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherSpRecord.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d6ca92b363cd16fe482f12ba938b1bc525538a3c680eb3209518e612d75031"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherSpgrRecord.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0e57666dd8767dbc425f795710917d046a690dc28e797cdc20d80a17bb7e1d2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherSplitMenuColorsRecord.cs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb0d74f2ae92404cbd5780d5b65ed53e233e76cb32f1b98ddbb2fb2aa95d990d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherTextboxRecord.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd010c29ce800e8c1c765ec985cea75d4dde54de4da4d72b5092c7d2ca94b20f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/Filetime.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"68eb3d3d85e983f4aeac870949e20410f5624091e94af0d5c146db581d5cccdb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/Filetime.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d65bf970cd7eda2f90193cb6867fd09dda2f8bcd025efe373f97208c920e00"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/Util.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"33b0cfcc4eb5e7bddefeb058b4c1d167bf84c4d5fca7cb0b88242f05c94bebda"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/Util.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"352822f1faa7f90d2e9cb14d284b5248fa7c1314afb1b179ec6fd7b653725f4f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/Util.cs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f105ef584d9112c3dbeb3aa3b707fe197a9acc459160742a88c2154150b3ed6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/VariantSupport.cs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7578671eeeb2c7a5ba1591e2ec342fb0b31393e59063af0e7564fb5f83ab69c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/VariantSupport.cs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a79a0a65963c170db51e5c1f37466cefeaa8a51ebaf1bcdf649cc83f5d554d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"7904b3c060d38f428430d9ca938a9e04157b41c130c66be2ecc7d71ba8cb639a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"39ecbe2ac5b8ba389607d05289524df6013bcebb49b7baf094bb6973f773f664"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1129}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7b59b7024a98e6c592189fc5e87b8ebb1032cbb11f69f4b113fd01bc75f484"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"8254df7e16d35db8446884849c1d79704e13a23fe635dc359115139717962eea"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":2534}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9351742b674aa0ae83ac084acb030b2725928b98c138d271bdc17e2f9e1620"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/AbstractEscherHolderRecord.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac23ebe9f011a7f19cf973810f63b72d0fbe25e545c913d89257df419c4ce103"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/AbstractEscherHolderRecord.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"143e96da84408b670a62b74b040c1146bd4ba1a8d11701c2d260ed20b23576e7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61ddd77bd41406c73579c7809570d0322bfe8e41c04f62dbcca3822f4142511"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/PageBreakRecord.cs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b2848b259e3e351b262dcb747d4cd041a001e19531eeb0f410342f0b34383f5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/RecordInputStream.cs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"334047e4df488cb73513e872e32a2113703e22e03fe2a65f8c7619ea98984e48"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UnknownRecord.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c3b9a3bbe5ef002d6a5caedbe5ac67daaf25c5ec07e4615323ab97b1f44cc7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/WindowProtectRecord.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"9162c56382325f279eb94a6bab5fdb2b546b1f068f266d4ab9e8df46122a0f9e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFEvaluationWorkbook.cs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa68edc6ec2f958403b5f4dfafa3f5a24d121fba1ce2da044bfa3b10b3367077"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"822b98988830e1b166ce0102291c30517292d02a30b8d08655664883667e2403"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSimpleShape.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bca78036dc2284978465f37d1fa448a2089f46e2da02924bb8700ad362d832f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/DirectoryNode.cs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"49a69c1393bed488dc7878f3f46d71fb4e60c146b38925b7613097b29a1ccae0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/OPOIFSDocument.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"716721bb3f14e660aafc89150f82a8b23c832ff0b98b40aeb612183a4b22945f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/OPOIFSFileSystem.cs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"89df7114a8cc0c7226d96bfb72c96d6c47de7876f2dd0612d79c21e1adb938d4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/NIO/FileBackedDataSource.cs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"49290ab86b21fccb4e064f59174a9541b3896bb112ae0bddad7be0d6b7a7b58a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/NIO/FileBackedDataSource.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"a90ae0ed2cf206c94973dc1bbe7ba7840d86df90c6f4bd6e4674dcf7d56415a6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/NIO/FileBackedDataSource.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"751d30c1d2b36a72b24a9c049b02e4251790c57e802ffb79ba6b287b7f32296d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/NIO/FileBackedDataSource.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc940ac5c62975a91ee99bc8031ede3d4bc87de6b50abe44039b560290a3bc3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/NIO/FileBackedDataSource.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8aec7c81423f9f7210e702e5af33ac4d403a9b3facf2a0333b049c1b79e7735"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Storage/BATBlock.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6b32d6928ec5cc1c5ce9b791922765b2a7f55083b85ab7e22aec0a5561f2c3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d2a8dff6e0a272f7bae9f71cdb0a97e76b78f9b1cb48372bbc7f6046e742dd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/OperandResolver.cs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f55a7a22e9b36ada8c4798b2182688e82ff64979af69946005808841c6321fd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/DateFunc.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ac0896488fd415babeb8d66f0325d982faa89bf3eee4dd80c1c4d5e6029c73"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/DateFunc.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d48756079bf254a299cefdc45a2e6b548675bb73ffa4b0a18a58c932ade8e0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Days360.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f24d8b831790b2a717dd3036c95e124dd948688cab445c7d5b64a5cf37af8f7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"d95992a79f7e1c1e7445020c86d1be3d86dcefdf5afaa2589d9659f4360e1dc4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e87568300f3670bbbb0526246482595f5d3aa69a65f73fd31a919a894af2bc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/MathX.cs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1aef520f5589159f74d12187f8ae4c6b5b16c834687e4bb8c6da2946288079"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Text/Text.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfdeeb8857355ebc7356a0d52b572a429d3d1c8c8b51a172062757e4293abe48"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Text/Text.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fac654a42ef7c4c3928f01fd085447d1aae043c442bfebb08452d67e4e4fd42"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b6236580ab2b960a76bb16750776cf2cd54ffcff67201410e412553cc78139"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c4f0127aa5bc36318a059c2822b8fa7d19938e6bef9d91a8fc06173a7c99042"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"29ad27e83612f57f9fa891a11f93c86f35de79dd299443ec4fa2540b1564980a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Collections/EmptyEnumerable.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c8cd08887adc05285d3b536547c94b6da5328385e77644bacfa5fd3d3f2d75"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Collections/EmptyEnumerable.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f36be7bffa3b815b7ae558f5fe7451f4a2d2bd180ff4843ecaa8786ad6f16f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Collections/EmptyEnumerable.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eda7a96dbedad757c8c54a97d6b39ae043f47111e9bda7731d9377e58be7057"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/IOUtils.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"011028ad884763a86e28d6a285bbd577a7e93e4af4d4cf58a461604e6c2350ba"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/StringUtil.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5029944b54625386d67b56f5ffc92edd1266f8b8a58f763d171eb2cea3ba7b7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/WP/UserModel/IParagraph.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1061281fbd5308359b3392cd9deaafded55145b911c7124d57f42d285a04ed"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ed508279e29e59b38e0ead1e655d98cf5fbeb310b60f1eecc861f666acb123"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f50937ae18da12a71ed1257c1dc4743923c6d77ac554cb9b460afd186478cf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd36046d230606cea94e7ddf3de36818d5b153d43fde1f5c041c99bca2398e2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"36d6ebb8e9d26484251e3c5354f7d9e7200633b5456f200f6a495d941cfb3a3e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2111b5eb43a5386a1bbf47a317e471d17cac839905bd2e06b718f1edfa0a1de"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"8977848ee1796919a7fe17dde43f7578c34d17da430de53ae382d04c3ca327a4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"f931cfd4d4f62dee3963467cc3bc1102fc0c98c8881f883cb8b304e206da69b8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"e654282775c7143bff6dbf573fc6c472817c5e3db627cb9ab9df830e51c4c529"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc20bddbc3c1623c903474138cb8741899442c25187dcc7d14a2cad2cf500fa4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/Office2010SignatureFacet.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"4198da0fa71ea3d40defa5762b1497ee04e3859bd04b235a363250f7e9837460"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/Office2010SignatureFacet.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa482aa0ec87f9c1e550d369e703a66a31ecb8da7d6d8fc19df4d825aba158b8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/SignatureFacet.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2261ad1248c079a26dcab4a75596e4906c359f536c9864b848b8e09744d5083"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"37846a310fa00e7bae001ae9280656ca1163d270781a003b7e17638fb8f0f2f5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f33e3ef20138903562ebc034c4def70e9b4d7d376c72945ed27a45dd8eb46c3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16a1b3fd6985e8d6b82b74ac7a57c00c6aa0d7da02b6b072a9fe05d438e68be"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"82044d95039a7a8d720dfb285e22100c6c56b7a21922fd43ea5d65b12cfdfd87"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"10427e89f1bebd5aba2932cbd224cbbfb4a8c54d86f8e264763cb78467b5d69d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61b81fa85b6e6f98e307332c4f2342d9799a6b7858f65752feb31a10c3a0b57"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"affe1124703ff4b2865acd06180e30f591271d8fd4411b0fb91ff3d331dc77c1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a30ee3da92ee12ab3d63ce2e4b6159e8c4bc240cb1e6bf219e3335bd438bac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5415e9835f1c1f60bbd20fe500e4cbc8d2e369b84a943a3051050c6aab5f8b9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFBEventBasedExcelExtractor.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"2851f6984507cc7700af8d43eebe461dcad18d78d43e642e7121efe05886f3dc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFCell.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"9621ab0bcf9c3f36b783cee48dcb5b379f6c2145065a13da670cba405f1a0236"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"44cae8199c24179eff3db80ad9401849914e63239beb9eaefc38d03125d8c5cf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFObjectData.cs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc9c4dc566e9cc90521357ec1cb420374acc3e54049d38a5e38ed4ce370f90e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6627}}}],"partialFingerprints":{"codehealthFindingId/v1":"06cd17554e83feec2eb1dfed200f1d89485b958ff7f65b098c6a3f07913c3c96"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6633}}}],"partialFingerprints":{"codehealthFindingId/v1":"77428b66bb6255608a146700272d9292d1e8874bc5425cb76cdc551a60e1d0c6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6653}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c182bcb613cd838f949077e2f1e1dc3791af357aae0e49a9ea1fd1666ff1b7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"533d1fb270d90d40c578556fc3a195bc847b78d510da1d4bf6565b55ef4f72a7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"e97a78490b8b2a783dab8eab30d389803525c348fd18c5729de3dac2ed6dd802"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aebca8d8a45119351178cdceee1a94d035d852737d3efb09e52d0af6fc22401"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"852eba30bdc5b85f43266f0a157c10abff24223d888a89f17a7389ba27bd48c4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f0c8276b8dc6922378945f207efc496cf6afad05fbe180f8cf19b288af4013"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b8036cac6cc312e158d844a14786236381720495488ddd463262b64e75952c5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"210f32b208fc726e81d44bcc057ddd3bb5a9bf1952548ba5fceafb1addfccb10"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb2e5201fc47444b5d0eed227fba570280268a5a4063ccaabda673c0cc6dac4b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f8065cabc13117e922f41ec0c484caf185a31413806b4bf4def71cecbbad07"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1e579d229cdfc98c3ec8440d4e034d4fc0cb6f9dc06dd84e6e08d6fa8322de0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFVMLDrawing.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"a481cf5961c52f4d3f3927f0b4457d94102fc9936be37b152a97a5d53ae1d109"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/Borders.cs"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"beef17c7a1f3fc4416a6c6e3a43d4196e98616918ffdae7b3009cbfad859998a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/Borders.cs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"410eca203b0bf1eba1e29f2907fc41399400a25aa7d61f52a500a1644fdfe581"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/BreakClear.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb56708543dd33a5d2afc8187f23c3cfc6dfc908d88a91f5ec60f86effc300c1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/BreakClear.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e93383621cc677ee86ca75ef09a46b7805d2150933bcca78f71cdb82c2153fa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/BreakType.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"62cc171581cdae88a428d60aa6981e2a6f9377d2cf9f6547e3bb2b1a14e9f662"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/BreakType.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"646e7e9d41128e8d30a60e729d2e54f0d10a30a62827ccdd20210e5dfdf38ba1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/LineSpacingRule.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c3005fcb6420048bd10f368bd1d2b6c2d7813e0a8f46c68093fef8ccd0ee75"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/LineSpacingRule.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"e652c4796d1b300f1bbcae7f56ac41c4d9960802fcd3ed615918b8c4b651f9b3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/ParagraphAlignment.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"d58d4c17e265e1fbb163b60fc231c7f66d83d90a7919d38628a97a61e6970a52"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/ParagraphAlignment.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d127b4b505032535da6c93455fd8bb54ae6d7455bd61e1467f911db624299c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/TextAlignment.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"13eeaf1fab9e5fd58c5ae6b64267fb4761d6f6bb446a063854f82f58d41aa5ba"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/TextAlignment.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ff7315487d1ab1cc3fa44ab21f5ac41b120655fe9b645a220786be048a600b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/UnderlinePatterns.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e25ff278e876f1ba640b8a79c48806ef120dd55522c0e7dc7df442bef12570e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/UnderlinePatterns.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca513a0900f876ff5f51179c3d13459fc3a300df8e14cc1b16888aaab87fb96"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/VerticalAlign.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c7653ffe281139182a1a47888b5c3296c9a4ba0d84c310b022aef6954181e8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/VerticalAlign.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac49a521b20d44b643af39cf4eae8dffa33e234f73742374f39b33ae3ac1a131"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"2351e5201dfee7cb4b5001f33057052a8a4eaf4bf2b9a29dbbc8fa219047c9ff"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc410a9026c9667451f31e2add725648a7cd9dca6f01c531d9547123b5d06ea1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFSDTContentCell.cs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9429fc6e9f4273589baf05fdc0a5f6e1a5ff4f1c67bbe7262e3cdd1bfbd75d0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/ZipHelper.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba90ebc6b083136636106748bcbb7413bc0e7fe86d40f22e46b51da541f8e644"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/DDF/TestEscherDump.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8727955003ef49b08fd1562e7c1c007f8e27c4420e1f6fb5e6d42005599422"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/DDF/TestEscherDump.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e3b4f2a8ba46a0f90347c92733a9177129768c38cb725a807552688b40a8945"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Model/TestDrawingAggregate.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86d79e0c91d46603e4035bae896559d49666fdefaa56bb44be8040d6092efb6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/CF/TestCellRange.cs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"4420aa707c06ea85e75360b46c40856d51ef2f1d27d5cb94bdfe397798db019d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/Crypto/TestBiff8DecryptingStream.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b163c3e1f8772fc89769b53e4c75fdd348af18958d9581a68c5ff48fa39d6a0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/Crypto/TestRC4.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ed92de8a2809f32d5df7a5978784b3d4e37a814a31d867daf10372014723994"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/Crypto/TestRC4.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"626588b665d92997e973923ea6c66ec3e2458bc5b0b82e60a69fa71555bd5000"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestBugs.cs"},"region":{"startLine":3369}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee053cdaa52936b2d614fc4fdb661df347020e945ea02d9cbb89f0de4f39bd9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFDateUtil.cs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"b92fe0be08988003be42b1cdacc033aa8c4ce23258238dd4794403d128f72860"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFDateUtil.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d9b9e0df981d60c87b23a6573d3c4f10b6eca7c2019c1717080657e04497816"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIDataSamples.cs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"957b649e6810a4d0d87c89153cd52edc5ee8e4631fa0ac5c77c5ad7c3f18f0c6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/BaseTestExternalFunctions.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a21a023cf032ef68accde652f1fd950d05cc6b2b636ab240aaa0336cf7fb33c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Eval/TestMinusZeroResult.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f019b78266954689bd5810754d60dbc4b4281a616a9e5992503c937d423fba"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/BaseTestFunctionsFromSpreadsheet.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"964f5b959eeb2ad37ea8f86e7efbda75bb835c081524fbf63a5176c0165f38d3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestDays360.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f3e26bb86804b2e539a211f76ee799d4e673191a58349c3ef933b37f25cefc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestBugzillaIssues.cs"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b99cb97fe282f4cb66ef4ada694e94532a33b5ece13f56572a4c4a34fb2b488"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestBugzillaIssues.cs"},"region":{"startLine":1488}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e6239197574ab84dd79efbbb2a4a3319d8edaaacedc1c3b273054eb360e709"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/TestDataFormatter.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb336d124b5f728bacc463c0caa6756016f86cbabca8d8d7499fc20938a0e35e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Util/NumberComparingSpreadsheetGenerator.cs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"a77437bf6a980ee3e40d2d12813bbba00524763185fd28e4eb3fa82e44f2857d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestCertificateEncryption.cs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"34dce1ce0d3f54faa245b0dd26acf09ffbb17c89c07767159f59caac5205a134"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestCertificateEncryption.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e22676b708dd4fc213da534c44b9843276144bc0514d49bbb992517a855688"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestCertificateEncryption.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89de0b0c82752ff6f100bb31e3a2cd43d17403df8a3b52590e385ab60b22f63"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestCertificateEncryption.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"f64d45d6b8876f50a2cac650e6a66f9329700ef53de0675ed80aab049a6cb1b2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSecureTempZip.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5a5f3c93ed5723a3044b28248b59a51250e78c386303a934852abb21d43676e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"448ff63c4d0c2e6a4a3da5456e24c06ac7751cfb647bf2c81c4b8b9664238663"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"9be67fdae73c820177fbf4cc23465451e1823665b604584c264ab26834deb3c4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aae761aad0d3d1d856fb789a78b4d5e64a1ea0361f163b7b2ee964a2567a1b6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe989b841bdbb41daad05d268596decb3e920ed26bbe2ddb631a6f6f9e918d6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd2f81c017cf283ea3e80c78d0cbc3cf5fc99ce09057c2760eef190870dedd22"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/SS/UserModel/TestEmbedOLEPackage.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"b95af13fc3d5bff9434e306ed1a08e0752844054474820093f1f35ff8bc1560b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/SS/UserModel/TestEmbedOLEPackage.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fc2859bb44584f513871a3542a49490d4843a8005bec746dc25597e01e63fd8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/SS/UserModel/TestEmbedOLEPackage.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b3571ddcd9ef07800f3b33aab7bc7135217ec8376112c842481ee5501b406d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XDDF/UserModel/Text/TestXDDFTextRun.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ed0d096fb67d3e9841597a32063a2831c7d0d04bb57777afc8c40ddecd1523"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/TestSXSSFWorkbook.cs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d7b34e574bb5211394d404a6aea12020b60680024b9f1e77de10f8c4dd9283"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de48985c59b8aaef05cee902c3e72f4f8b2470d31fb3a5f4919863ea19998af"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestMultiSheetFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"03fea9922323e6aa0254a1bf3fec53312f754a9a670355a0d8b9d64ab750fa1d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":2226}}}],"partialFingerprints":{"codehealthFindingId/v1":"0646162bc4a7f43d25423d2936c2cbf2c39184ee75f61fe68eb83614053d4da9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFComment.cs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"31ffb94d6ffdde4af2f061fac5dd7ffffaad0336389550a7db25759f12b8b8da"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFDrawing.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f09d9a6804b9f9df4f2568a3f9ca622f56e090c19b25d682c3a891960d4faf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"864cd0cf41c62196350ffeedb57fd1a0c887bec88d4feac5a0a0b739658e3ce2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b793ab68545f21ef9d49dd50b3c3d0ddaecb8c65e424aa352c2b88e726a2fe"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFWorkbook.cs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a485c3023443fd0d94a335f099ee3f46fc091f90fbec2924e62c7e36c5f348e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFWorkbook.cs"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc89b9d32b4c87da96e84a700dd82e4e6401a2aed2e9af609fa663dc2e05cc2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9269b9e55f01e53e354744076aab68f530ab583d78856c5cb0ebe2972c4edb7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad63fb63175aff5d1f4b7b47d0c00b412f87082f4d19d4068ae98d48de6a778"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":972}}}],"partialFingerprints":{"codehealthFindingId/v1":"434520ea0ce0c8dc574e4eab74ecc4fb4ad2e8f8cb7f0c80692ef671b0b4fda8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd4d8e148551e9540796080357d04040313bf4cd33d16e4a11f2784da31d655"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"89b1e2b766ae1879c20ead9be510c2a57e49ad37616a4dbddd5f8cfb62b1e83d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"842715fdfe907e5e879d5a5b637c5e960f40f6e2dac1735016779f626193378f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8af839c480f19f97c1bd2c139ae6af03e2afc28ac1bbd73b3b47a3fbf288dea"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestZipPackage.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"c79d502ffe535408380bb8f955137f7aa0f3d2c101402eb6dd8f417635240e7f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestZipPackage.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5aaaaa78b6a09a948977d6b07de8038f1fe0c37507a885e0f2fdf78fbf853a2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestZipPackage.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"33e761b6991497fa0fcfee6f06471f78aee6279194e2cf29cf2b1e1b07bad8cf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestZipPackage.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"f862e6e5fb2c4ec59d3b687f4a5dd5e4882cb0d21e4a675397047a6d8edae771"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestZipPackage.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e00c327411549dda97e09d071b970b1750ee00cf5157f984ed4f83b3c795d5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestZipPackage.cs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8bf3f408331db597073aebba07adbbb901bd1a01e8052d37c78fc45b0424810"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: implement http://www.schemacentral.com/sc/ooxml/t-a_CT_Blip.html"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b2e26283aad2f2d860da4d236201d2376f5940dbffe8e513b93cb52529f3c5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 15 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f5b6dbe9316ae921ba4757e1c21bc151d4ef431d88a92d279879c84aea8406"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 15 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":5173}}}],"partialFingerprints":{"codehealthFindingId/v1":"02dfa6070fc482533696fa2461c6dbab39cf386762f942c41a0ef4fb197fa1bf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 15 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Model/XWPFHeaderFooterPolicy.cs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc64cc6de0d00f1d89794e40586887326dad45a8ffdf1391732514088b5b3a0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":1434}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f53ca30649203cc0d9dea650a82451334244aec2bf36ebbee473b4ab1aa27e2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b2573a5a8bbb69d782f32314798ab528c48ae420e95300f2356434e9bbcccd9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Fonts.cs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb7d40324b4f14026bf54ed9121129a7d814375e6c9a1cca41f9cf33b416d0b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2132}}}],"partialFingerprints":{"codehealthFindingId/v1":"790438ff77d8ec5062f3ef08986f812911b7e62a8551d8863a531a58e3a884d2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/CryptoFunctions.cs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1f44be19de3745d75598592f76b7077f9077887d486f02dfe808e24698e78c0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Atp/WorkdayCalculator.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64504cc722e881acfa4a53e1147387d397f9342e4184fb088ac79918bc76a92"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e407ec86bee9925852da88d0ed86ed88da7b9cc42a5b781c32143b93d291a32"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"eea42d527821cfe474794e64f830c4e2c254f65160a6456f13e8a2401ded92e7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"14469ce7fed9ef9e97208d9390f593255a7c644db8ddfb7d13ac53f9cef115d0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFHeaderFooter.cs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef9fd110e05ae59505ba2badbfaff318906ceed9a64bc98a5b34114bcd7b4b9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFHeaderFooter.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"9678464a2151dd7e626c165df175a70c610021fef62ff29fa754f7ad8a7626b7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/Crypto/TestRC4.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc585deeba5e1f8ba633edc7799cf93b07ac77a5992a8083b67d1c90aa95353d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestDays360.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d09c668242a000a16492fb73609426911b8e7d22dea262c952495cd819c905d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestPercentile.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5984a3d4a51bf3f16e93a73b6467010ee66ddb5dab72b489f831efd4304e8e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"71d1da626e8c8245c667fee7c289f2278a39b76b1a67f7035188fe9edb1b1d5c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd291235cc5a38db24a10864d8d9c3a391d31b2a649dc0249b3e1c9bc446671b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80ac43762b7c93ff4b782453019eb373622e7bbe93770afdd5be2db94f37b6e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f0353271034082f08135adfc85343b430e84f068a0479cec0c2112b85dff33"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"febc39dd6fa99f65dcb24462f3e49a4db43af59c2713df645c03c1602e91b7cc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 9 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"6692c6176c1f1e2fc74bc842005ae540ff18bed7bdcbaa04ee642636eb576ab4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":1703}}}],"partialFingerprints":{"codehealthFindingId/v1":"26b8a68af4f2857a29957a53e49058f188f6c37219efb833f10e983b9fb6793a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Dxfs.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecbbfa1f52fb6644a57fb50ab6408fd4985504bede96039b4140835cde1065fd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3b892cb491b4cfe74b95ee5c249172263836dd69f7699a82c7ab4e90bbe0d3a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/OfficeDrawing.cs"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"18c5391818b35cef4b64e5c1fb4252b60d7caf8b129422f5b2f0f2c45a9ce2fa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"753f435d0895c736be95008633223f065eadbe81afa858f89fd88d666cd22e6d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":7286}}}],"partialFingerprints":{"codehealthFindingId/v1":"16129a4edcbfebbc8a9ec846dd7ecfc3acc7a10c92438cb173c4436354b683fa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/NameRecord.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7900939f80aeeb86cfd2c184371b0fec3e76262ffb0127f9ed2f795bb5999e8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSDocument.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"304bf57b69fea669ee1bdf64b038e0ad4b9dab5592220dde8949b5a31d96007c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/RelationalOperationEval/RelationalOperationEval.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"56269c9a633295a4934ab68e9e3573557fd2cdc9a6d8d2ab0468aac1c9d9b83b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/StringUtil.cs"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"f57a4b440ce5d1470e813cb25c03fd67e303e7d4faf451ca56f6f48a6756d539"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"693bb10e48d9ff3e5a04c539b38c52864c8bebf510638580ed4f578c7998525c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a41e8262ac73ccb118ae21581d4020e33746c36fee27a698a5e209e6d0def7a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cfae876e81719d33cd763612b565e1dd6746e70a710b5ab5cee4feec066910d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"410bb372b230c52e28977ad451e40a0d9e47c34cfa469012c77c31510ebaf6a1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b2bb755665474f6f46ec6a5821fe1d1e22adb58d12310c67f350460251cb9e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"601c5e631cd2439edf46fa3d7b970cbfcba4f1af89a9c2156aa5f321fb7ee579"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc9a27fb58ff06e39bb016af9d0f7e0aed415d2e89e0ef1bbea91e1da29a24fc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eb13c9df008b02c059553eec6f18f3928b818c93c5a83770efcd2e7ce2c99a7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"27899de35047a0c7b9f3d0add3a686f1f8177630552fd690746d116db8e14a5c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureMarshalListener.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"c40e9c768ced1803e1d7c05188e1b4be5f21af573b0d6edd493780636f9cc440"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"bebf3a16c1847cbd7d1b7c463e0aa153382ad642f37987ec6b716656c29a3a62"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/Borders.cs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4492c5ac871c8787590a588972c86e91d3ce3128f844e757df7d0ab7e19044"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/BreakClear.cs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cebaaf17b0f98528dd971003eda5e087bd91ed3af6a610e3f8d723d61edb2fb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/BreakType.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09baf706e915eed8f4efc280b42906463854cd15df0f1a8e8b6b1dd91050c78"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/UnderlinePatterns.cs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b6cff19c926e78f32f10a7300f199ebd91574da14d1aaa759aa1aefa403b19"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/VerticalAlign.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1af8805d0931417d215b14b1ae50703409aa7ff2bead4033b7ffbac5b4573b2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Extractor/TestOldExcelExtractor.cs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"9489dfbcebc8ada40809905a1ea12f934641c74508a44449c9bb531866ec0a16"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIDataSamples.cs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d692114d32c9f627e0c3d31ed9a622b156d3a2825c25e2004ad6054ec47d91d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestPropertySorter.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"579ed9742ba1e972a8a9dae4ec9307ca1db6bf17a02c4d6acf1581952810ab62"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestCell.cs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"d854dcba891fe3dedf54dc04cb8b1b8177a5337c096a373f4fae1d39b2417e4e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"6815a9dc47bb62e6b502a6b3c4262a003e456cf211409a078502222a3747de22"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"21d42903e311bab9204e5a26848163aecbdc79f94c4adc9838fbee3559d57950"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"32ad6b0b1ceff0fbe6da05a945741a0fbc09d905fb24185f174831a62565cee1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/TestSXSSFSheetAutoSizeColumn.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"10de71f74de573698c7fb4170c5a10604ef6ad3547ef8463997a4a86f8749d26"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a62b9386e56bd2361f8a9813a5c2527822f6091f7935878088335696dddca1d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18e9426f54eba919ad07056190b2e7a4a22b664a122fd198d0ea37a7746bc84"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f86e3be18294789956dfe0bc0b7932d3a912f37aeac2a0ab00c042d57e1a9b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFDocument.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"91c58e16da7477c143ea5e909455bd0758b3166d98c8c63989cc7166eda6ffdb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":1874}}}],"partialFingerprints":{"codehealthFindingId/v1":"268d2a8e770bc35131e371ca12a5a2163d73031e891c269716225754de032172"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":2003}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e925a60ea052d082941ff0159255ab450cb7de44a94c93d07652fe6d4d31315"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3738}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef51f9f32cc4c72192c58e2ed3a73cd87d047c6d51de4008757b615b8baa8cd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":3975}}}],"partialFingerprints":{"codehealthFindingId/v1":"91447bca285ef57a92ca15acb5c577c677540b0005fa206057685e23e3ada609"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":4378}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec77fe2d02ce2dd3c53c83f30023669eae2bfe9882b9fb0843054c1a5e2492e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":4760}}}],"partialFingerprints":{"codehealthFindingId/v1":"c43b188c4e0814319e652476d82954c7a22f7a3b76f8a3a6b8fbb969134f46ad"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":3755}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e23a41f7662a95eb2095df5c21f95a467b6bdee9c0a8516884f103b95f44851"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"16652771d5bb959fe8f9a02953923c138dc9b6864cfa30ac83b8523c308e9915"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":3822}}}],"partialFingerprints":{"codehealthFindingId/v1":"47227bb519975fd30680eed46b80cd9633f8dcfd3a1a0b477ced802c0213cb76"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ContinueRecord.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8895f7b549fc2bc1b10622d724a80e5dad7f7a0b8f8a3a910d04848d67a2311"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc9172da2e93d57cccb84ff58505dc73d1a47439085e0b227bbd48249ed5f066"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/FilteringDirectoryNode.cs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"128e648973352401e6c0563d61617ac4c77523763ef15fafc8e8aee9925e3402"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/OPOIFSFileSystem.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61ba4eec059c13cf92ffebd6d50d40469e8b3b013387b20493dbf961d2d1611"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/FormulaError.cs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"98cb2de0f8f765b73e808f42995a0a09a9acfddb073269386faf73e5044a34dc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/IOUtils.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2fa45dd8a110d6e643b4502a1bcc8c03c66de095d983846d7274b4e3eb62dfa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"516d1ae2c7023912f1774ff6dff7e16f7e9cb2390aa6b14d0ff08e8ef34e64f6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f012d466bb5ba83eff4538d3d0748bf2729aa659bab0f6c8616e1e9205da765"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Number.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"70d7cbb175f7ba7c70174b1ba69ff27fdfc4e02e45c1f9251dd07e5c0e675943"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"7143a13a843ae8d70332410d295234f425737f5a01fb5bbc80baeb75ec133830"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/SignatureFacet.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2527a410dbc62f12291df5056fff1a687a631b1441248dafb218a18252b1284"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"516f9141c8e8f37c5fbae1c8cc0f3f393fa63ff7a6f19525d5ebcb054b853956"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d29c24ab37434ebc542fd6732bdaa24e149e8febfcbdcf17226dce3fb5eba00"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6526817223bf3e9d544310e273c361ff24055b174eaff09380bfedaf35a5afd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"f069229db39f37245fa5eaa26a141e1a896504f3fb0cf6e83c7e6f8d6efeba45"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureMarshalListener.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"df4bb9f88b616023338790bcf2ebb3c8779bd19192ca9f25050fd88e58f3cb84"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/XSSFFormulaUtils.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e9c079caa86608a3c37b4e36ccc54400a5383771916834621859563709d73b4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFObjectData.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"f751f8ff354fb9f21dea1853f43bd0cafeb0fe6e3aecc85716a02a129a9c4566"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/LineSpacingRule.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e81cde9d1d8a7bea89939286f22bdee2cb9ac0858e49bf52cca71aa040321e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"6956eb9fa6cefce87858341259df547a9fe7e018a7af9e024db244f68e9562f0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFHeaderFooter.cs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6509809b70cc5c761203bdee58777c275eb9c00ea4d6e16af5a8905141d080f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestOLE2Embeding.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fd90bbd114b8596f9947b8dc83e123a50a1f04eb9a5e85293d7d86843840d6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/BaseTestFunctionsFromSpreadsheet.cs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5d0dd80205a6483619bd00a6ed723b9b25a36adec6e344cdd13e820d2551a52"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"2075ff661d4b40b89ca2cee5d6382d70b10003d436d0ef54ac11e1dd1b244273"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Util/NumberRenderingSpreadsheetGenerator.cs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"1883b5123535180d1b84be269cd400de308e9cdbbbf94c83076c3ed5b180ac3e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac0e4205dbdd8d60896e4e44732b7edf5a68d558c3d78b31d7a36714d5f09d85"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"27f77230166ae327d2ea742c0c3266716da91d16856c3cd4a3aa1850d7c7dadc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4c42474fb79249e0bcadcfe0b77c26e20d67390062a837e4e9a82d1c19e3998"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"3efc2ec0d252d33fa29c0ca0b8679e4da0707abc94039339c8ea7f7717767dca"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc13d6913b5f7f82acdad24f551e571bc20031c8b99143d2bb3bd0586f36aa76"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"04552de7e7600ee4cd88843f2cf8a2d8a4c9cfee7749c52415fca2643ed4d5a7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"70fc54d4c7b6ab19cc5588a1b0fe0f8904fc020cdbc086359a107a4c24d38d8f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d1908876f040d12617a5aba4ce72a94a5a57e2ce074288083d82a7be2e8425"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestUnfixedBugs.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0a8f9e341168b3d9dcd4b37b2dd41f01c7ef6727bcf4497ef4f772423707d3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":2648}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6d4bf41d222d8b2768bcf71630ef576dfbf78b02ce032bab4b859a3eeeeac96"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b498a2892d091c094f8ae2c716d3f454d54e491d5136790187e2eecf190914a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8eed5e0b83baa8967b66ac42de37faf6b864833b4052d6ffbfeba6d61a84078"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"9602b4078a2c9ea7723acfb09ecb6bb867cfe0558f5f36ec5066ac3aa86ede01"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"67dde59d0368ed40449e35f3385404c5b49de933d64ee81fbb9a1e3f3d598655"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"05999802c57519ed8e40fa4c1071120e0959f9d6a5741f783268765a0bb614ef"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec66827fb028708e3a66b8d69b93118154c3048ddbbb81e85168a868e39dca3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c096fce0377add3e528bda74fdf1973b74e74a77d9d64c35bf552ec2266ea5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b507164d7fe43184df19dac505b812b71a764a28e971653c8330165e5471ca3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheetRowGrouping.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"008e2aa3b11bc29232f271335e6db04283bf9d0013916fe9efa888d4a7ba2e4e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFVMLDrawing.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"39c32d916ca4f02f6c69913eee71ae696c95adb235447e06ece79992d389374e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":954}}}],"partialFingerprints":{"codehealthFindingId/v1":"68c253f6d7bf633b7b428aed1740ae99227661bf878b0d78f1b7c4c156a96ca0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf16a968ec2dbf73643606809ab1cd37ddcbc79b163afa0d785065d198ef565"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeEffects.cs"},"region":{"startLine":2221}}}],"partialFingerprints":{"codehealthFindingId/v1":"a06757533bd9702015b67743201d2c6cbcdee4d0986c23811db7579bd0e4425e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5476cbf3819d9193fa56585cf9b697885d710c36257a6ca289bfd229384ec74"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"599f72390cefc8bec4f4520220e6a23e2096badbf370bd37a870dde92bd547dc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"15308e5d87ee0b90a40b8ea3b0794e123bdbe55f9db6a1b8fa92c3e82e115e37"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"68951597f242a58e7ee5bfbd17edc1e3b842f08404aa2222ee2c41d910b70dc0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9fe79bbf1a7fdc341b1773364dd1c25ce725221459f5742268e85df82a59b7e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2ca6507cdf1ffcc2b4a1dd73219338071da61c88e8e95d0ccb86d2ce24c3cd3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ad3df77df96a8ca1017d5dcf03945010746595af9a28be5658ec3a1f4bd147"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Authors.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4adcbf9820f6c38a24a6d77573b6033bd3c576c7a2b0705667a1ebb8a7b570"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Cols.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"008a2d8b23acfe8dfc4c959152775a79f7a2f7e5fb1a00cc4737198801cb77df"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Comment.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bcffe76762cdac7b26b3a8ecae813b0a88a613dbc0982c3706d6fe8c154212a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_SheetData.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"defe9753e98bcea71ff33c751d7668ed14a14b3debe2e4405610c53eca6e13bd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Table.cs"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5be91381f3fa5dc3d821efeddf4cecb7e771fe70162e139361faa7b92bef665"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Dxfs.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46e48b680d61575ade4cb997b31ce56817032251dce2bb024fe560bf965433a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Fill.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d979570b25bfc59095c9c103676a27d41fd57981ea496425c0a60842a26480a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0994e5b2e9ba30db0e885d459d2731fbc14611a5a639c47ab6100c51bf59e1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":1617}}}],"partialFingerprints":{"codehealthFindingId/v1":"be172555b99838191ad9d0b4c3bd2727dedca5b6df96cba5d7261fc78f42fbb0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"83018381719d59c35ab455aa531a319aca992f1ecdaf40a3d8e001d2c73f7145"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6027b8ffe88dfe5cbf67d205ea29d253f3c8458a269a54a7d62e11eab16b10"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bded37130e9b86f0d1a2b5d5242ab7956200457de4d10a75163b91ad0f80a40"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/PageSetup.cs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b776a67fdfe903dcef60953fecff4a2932d2e0fd81b371e1f3e7765337dcdf8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":3015}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7cfe360343681a91a12fc407057874b934e2f5f04c7e51ee14a8dd5ceaaabd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":5234}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8e9f2c81bf079a87b59a65e7cf497b09ee5163e76ad949a28d9d02a00a9b68"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":2668}}}],"partialFingerprints":{"codehealthFindingId/v1":"48386b153141611829840312234db554fcd61d9258b3d755cd96991dbe4ef59b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Table.cs"},"region":{"startLine":4643}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6bf151b2980203d38b95a1c386863d3a8331e9de5fea46a39384278302941a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherDgRecord.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"742e8d30e4e974a318f1a3fc964efe0299bf52b259937b4cb6ad879603368cca"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherDggRecord.cs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"a17799c4b399e15d4b6adab32ad8c8e73a67034f5fbae9b7aa3cf4bd8b4834f9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherRecord.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a68a8707282ea0f5b850599095df7e9321c33612e3e20989d302bd834a6209f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherSpgrRecord.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee5300939dbbc125e4f797c6b693132abb394180a27f5f6983a7cc1a5695a9b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherSplitMenuColorsRecord.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a3d9cc5aa2584b041eab0faef9369a9d1411fb511aafd2df2a9a8262dc355f0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/CodePageString.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"0540ac0b50a95c0a2188d3dd1a0a6f78748a53848c52210dd4aaf3537c4db041"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/CodePageString.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafc345907d723b506ce0f6bce2fe1ee32ec1b300ea74a8979a501a636e7ba63"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/Property.cs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"763cf79743e568409fa1017ed0bd858d383ca514d0c29e92cecd72a1da9a85d1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5cb3f48933b7450f515cc887266b2d8c4c374fbf6c31a5575d661e5928f6c54"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"952845083dc7c8f2ef4389a8186ed021af3585bc3b057e8518e84757000b6a1f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1658}}}],"partialFingerprints":{"codehealthFindingId/v1":"b195c124109c64a85e75efbd8e29b0fe88d85446cbdc2490616b440f58d5e4e7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1b8c0efc5c2b4ec4b02199a7d6d4db5b202842e0c73abd1c6d076b5b2329cf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1670}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e19c04db96a99b28d4c2cdb74e669cc0d339c7184382792dfa640421d31f01e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ContinueRecord.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"015d18e9440fdf22224a34abcfbdb87c83779de315443caa2df2550190cf016e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/DefaultRowHeightRecord.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"dae76c1db0b199ce43e8f5a17a43380b788fa39d4e3139298404b6d9dbb650e0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02589adf90470dae879c8e42642d6cda2923b0ebd1b951835e0bf89d690d186"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ExternalNameRecord.cs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98af2d0ca98036bbec844fef75388fbb7055f1134fe0f0f1d428952748c09f8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/InterfaceEndRecord.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"01c5c09249013c67180996069754f9d717a94c21d3fa5cfbc3e063df1e910dfa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/NameCommentRecord.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"c690b3c962c9f34b8df5452396c26575993c7f102a74a9f2395930c62f8465f7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/NameRecord.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"d34380ec2a8574f9f024ec22fdfa1d3c967a40a9d0c47668ea26bdcf809851ba"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/RecalcIdRecord.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"86710d8517447b111b1d4dc05549d72cd3e4cfb8559db428c5d220a90b306eac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/RecalcIdRecord.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69b40623214d6a78b7212c7913c21ae77aeb565d03ce0a5e099cb7495d0529c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Record.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"727ac6193bccc66c136418d8c2252fd55c92e32f728b058cc79c8e9c8a7b672a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Record.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8c3acaa599db3277ce0e9d2e231e6055b333f22a5775ed2fc01a6f6ca41439d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/RecordInputStream.cs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"96eeffefa5a53488bb856871b1e01b76c7924a7cd3c5cfb537f20f776c51cdc6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/StringRecord.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"239875f9afbfcb0986a4f99ac23154f2d1587da8fa6e0cb228d7dc5f2f89a25b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/TabIdRecord.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d9b136515f53488fe81310c958cbd70464a20d22d580079593194b69d28ed50"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/TabIdRecord.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9dee761bffcb5fa16bb45d1a62ab5685e8db48751746ee9ed3313991e860c55"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UnknownRecord.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef17e5b7ce7e3bb40928f7485770034aaad1b83c1f4a33b4659f778eaf59ab3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UseSelFSRecord.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"af100d3266b9fde26b3cac10ab217e451c87e7a12a43a48b5fc894097f970fce"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UseSelFSRecord.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c9407d6496677f62e11d762caf8b6dced38e6de67b59d68a7e439cfbe755136"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/WindowProtectRecord.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"3063f01fd361291070b25ed4fc458c13aca0c8a674a77e9c4e8cf97beb939d6b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/EscherGraphics.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"38fe3d09a8682d729841c851bc08f44bce28f109d03962ba0f045e5a2d9f1f48"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/EscherGraphics.cs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"c70cadba2a1b4ba63f1b0a1a5fb02022972e48a2175802fa873912636fb75fe7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/EscherGraphics.cs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f71296d08649233fabdc0a61ac03af900c9d2b72e27b3a9fbd08d913a9c0f9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":812}}}],"partialFingerprints":{"codehealthFindingId/v1":"936719682ca3b031a48e99224f28cb1000cd39605eeeb8ddc18755a389c71801"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFName.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cd79299f52ffbb0da47dcb34ab0a170a036bddf5bdd0e0340401e1ba6be4589"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":1462}}}],"partialFingerprints":{"codehealthFindingId/v1":"923a1597b6eb037d06fb92d8afdc8452e3bc86165358b8fbcaba7dfa42b19b50"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/BinaryRC4/BinaryRC4EncryptionVerifier.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bffb0c029aac83bb5de3be0613be163792df2251cf82b6b4b221aa76e25a624"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/BinaryRC4/BinaryRC4EncryptionVerifier.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c457c919b4b7ff358382ce29fb06ee9ee1c91021938d763058064fa9decddc3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/Cipher.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5218be44688a67fa6fb2af065d025353ae0ed3be876780a72e4c7cde7438a30"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/FilteringDirectoryNode.cs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf43620574664e6b07869539a46c6aaae27e9357693595b24315cd9289256d1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSDocument.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"76f2cb43b239b4c4d3dd9949b364ef39025fa4142cfc35744ea1975d3eb950c2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/OPOIFSDocument.cs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4426985787c2ae15b66c8624567e0d4d84db8846aa4e37446ec2a40145045d8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/OperandResolver.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"988e12a572069cd4fb841ffd4c3275a45766cc34cd2e066be03c3ced0b6df29e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/OperandResolver.cs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5d91c406e8a12b7cc167e0aac3916748ec60132f2ff94aee43b0dbe14decff"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"733ef00f875a40120144144ca5d5e45992abf574aced8e34c9ebcbacea945369"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/MathX.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bdcddef2f892d47ac6e72bc7b7c9925386888b495e9d1c145d025464fd6b49e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7d768277a6816ba3e6db34371a74cf4341ffa921620431909597960df23d87"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"3adec0057cf0b997e585de1c8256ec042785b24670b185e6de6f25b3230ca1b8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"637ac7444793fc0c322240ededa7eae340cdd55c755da3518c712d3e0eb441ac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/ExcelStyleDateFormatter.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c65c73c92c517195c3fd43632822f6ca2e1176f17c1f2a47bff988daa91cfc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellReference.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"b35b88ae81709f2defd4ca752339c9dcacac5602b70eee0b4a0aac68124407a0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"f61ed5557fa1c76456312c4cfc58eab004e4cd4ab0124943365bd1cf5703a738"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Collections/EmptyEnumerable.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"155ea78af46773f23e3339e390349027c1d39366f38cd3b2008d46c072d855f5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/KeyInfoSignatureFacet.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8f180a966f7e58345dd9f8c95cd8802cfd9403e728314747659bf154affd06"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"71bfae0d02a045e2737c579625eac52bad8b5bc8f8adf49c204c9328950ddea7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9b6295044b6ca56b87a99327b8276999d24e51d2550c52648b9ef249a21bdf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"4835473f740ed62e4283353dcc82a3ca5f2b9b28d4306a260f8dfba1794046cb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"a551e5b919b564dd3a4989fe6973d0c491e413d3b0905c595d741c77cc64640b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"77c4ea0d2f28861f7e01a27ecafd500d1c1a4a1561cd6d86253b8f55427329cf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"e448ba4d20b866869b93d49e98fdd743d27282d594d0a4839307f0d90cb7cefc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d304312247427bb95d86f559c68fc116de4151f415dcbc28507afa93197abc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"256098e12ad12bf93bfaa15c840621d07929c218201ca3bc99d7dde65375eaf2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"33e6ca277134529e4c6d9f536894a4fe03371a61f36e8e72b2e3d1e0e9d78add"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff7569f99b06906de732c0b22072a6057d417e6e6518c2c14e942384dd712b6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4f97453a58815b4b8d296741f257c412a42e4a559674143dd0a4d873a570f4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"36fa7d12e529a864d9a58045c30dbf53c283d747597332478abe35a25ab3fc3b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b1f2eaf89ae2496a5af226a161fad18b1f30bc7c3aee247f2d8679d95c3ac28"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"6960eaeb1df5caee01b9c3480438ff07aa62861f74d605cc696b067ebf1ca115"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":718}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b3eb4018e9c0b5dacf4502493bc5bea4697d9e6f6c6264d0608fcb9fc2503c3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"4218a87fb8e1120ee38abe30ed88a45188d227d204cb91293bf44e9284e39cec"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a8dbb4f0e2cdc9502061a5909ab76a2181150370ba7e390ec8034bade704baa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75e28b8033392602f729f500e1e99a47665c1573a87b86ef477149ed472b0cb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"8151d4d9b9b2409a50171678b472b3bbc7c0cf68f0cba34682d8ea07f251a244"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":948}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac11d9311b632d5dc99c7d435dd52873674e405db7152071f3222e55da4cc25"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"0702a2988f58a9179944c485564d1c08a3ca9b2913dba7bcce4c96cfe6e0d268"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd032072c3137e3674f7f64a2e7c711744d2ddac06529b804ea926bfd4e2f86"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"969c92e70ad822d4eb1e53ceb860ef90707446271719cfcfd8b123d120265111"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"8735dfebb6b6baae3df802e8259f10b151bba73b62bf6fa16f58eb3b5808dd8e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"53097a01e5adbb3c91032a9c8f920c7c0ce6c3296f4a9ced0c100b3d426b4f19"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureMarshalListener.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"3290d3c94596ec55c033cc1350c4e04ca3dda0b4aedb0a60d98c45490693332c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBHeaderFooters.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bad6dbfe549c760732f5a77eebe3a84471cdb491ba048ec45ef9e7310db58f7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/EventUserModel/XSSFReader.cs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2cbd6dcc5b910674cbe5dc800c9f05524fbcef395738290734fda5cf2ca6a4c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFBEventBasedExcelExtractor.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dc5a6b10f4faff037270e93ca4b2ddfa6826105f390232aaa0f48de5ced441b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExportToXml.cs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf3234a992a932bf1fe321c7dd2863044f9c9788555966c7f9c1dbd72b812f03"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFDrawing.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"69011c7c99bb56fb87321ad02fd5f0626aa87d67917b6e57dbefca9c105cbccb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/XSSFFormulaUtils.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb486d96d87b0ad5fc8c56fa587d25202e86049f46873ea928c559447fecc0d7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/XSSFFormulaUtils.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"75fda0dfaff7848681f4b789ca69cc6bd871771626d137d8882275be97f6099b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/XSSFFormulaUtils.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3becee9917f541de3e58cc9a17885b033760de7e953b8c0cd7f6ebd75af34e2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/XSSFFormulaUtils.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"e894348bef90c43e30c4c44c051407e5c59ab938b7c23a6480164d84624701bc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/XSSFPasswordHelper.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a9f31e93843b02562a0230612f289704dbf3486f45dabc58ab1e9c003221bad"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4bcbba0e285df9c945e0ebd7b6869891a9133ff558b5852a427a3e503d07ac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"710ff62df6fa2b9ad1d98acd6e2efccb5772bbf01da0cffc57ec716ea6683de7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFName.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"a37cacc9fc54eb2b490db07367fcb26644d6a1425959ccd1cb0d0a998dbc8edf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFObjectData.cs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f5f3fb88a3fb974814f5d025da66bf20ff19266c64358368a3a6e8245e3d5d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFRichTextString.cs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"e12a922c030c22b5f937eb857de9700c6ecf9a364804e7291bf72498a17cc400"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"6439b9a0cb0726d121ad6fbb3f2f8231a4f2e0c8176cb761ae005dd1b55fd168"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e08f7014f413435ffb6c5d37c7c5fe1bc046844caa3ea249912f7cfe7c2e2bde"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cf8445a92ebc6dcc08d0e2f411c91dbda663bda22b0b3a6c8c7ecd3fbd43945"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextBox.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5c1320f0d9f4cd90d90ed1dc668a2f4158299e21cbd8a5213ae65080703bb8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFVMLDrawing.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6dfed93f2e9e752f8e44f93dcbf39f5150ef20bcf5160fa69c8d9fb3daa2ed"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"31881713d3f1b8ddf7e5fb74ffb082cde1d22f2233c55aa6a1d06f557b1ab37b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"348ac8d2f3fd8c603fc7935ac642c9f1b226a33832df654e17fbf3925d6c482c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFSharedRun.cs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"613f0dcb902ec1238070354dc3e610f25ecb99e919554ede06e072754b9ec567"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/ZipHelper.cs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35de28ef22e301e284bcfd0eb733b21b619fd3c743e3754a4ce8c9bc66258ab"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/PackagePart.cs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2d074a2936ff53d92ebb58e79c900c5e9760806d48e3e088f68641d2983a5ed"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/PackagePart.cs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"626743710742e1a61583da01bebcf3aa74de1bf605bc3378f26fb5f7e8649353"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/Util/ZipSecureFile.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a883a8feb2724438d63806ecf8c817d725135c6e51f2d3c89d29fca64769bc8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestSanityChecker.cs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d374d00be2b8f02f18c451dfcc9e5d70a712238e5ef73808d71e716be96c2b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestNPOIFSStream.cs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"9947bb8f7b426d1fd5239187efbcadf519692ace53d90a9cfe538dd62433ecc7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/NIO/TestDataSource.cs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05f9f1f374e91e0a766a2813c6d906adf03b208b1fd2b1e2423caa39b2cecf4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/NIO/TestDataSource.cs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"91ebc564a3b33223cb68bcc677ad0340a7e264c571fe217887d1eafff7af843e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestDays360.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"77554b7ae6c7db11352bef506fdcd8449db741e25140a093751d739d9ea94eb2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestBugzillaIssues.cs"},"region":{"startLine":1492}}}],"partialFingerprints":{"codehealthFindingId/v1":"290e1df0bfea4ac5fdd7d432b1b7fc112631a185621dcecfb58fb995712d202d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetAutosizeColumn.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5103896964b0601213e3c555a14a7ba686afa2bb3788e65c90dbc795c3f8904a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetShiftRows.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"57f586863b2c08ca936a21cdc2ac3bec58169a965562ef9f73f4225b28e07d9c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetUpdateArrayFormulas.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"7efeb2c8c1f91fc6514422e121b011db4836e076999ade3f1fbf3a214afdc43b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/TestDateUtil.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"175e2a78a4d0a5ddb99a0245d6e60d1d5ae7e92e415980728de784d8cfe26c84"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Util/NumberRenderingSpreadsheetGenerator.cs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b07241672c00f27b203c778b718522d0e4f6e44cb1b81917b1b20caa8b7724c9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestCertificateEncryption.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e21c40f3df759f48433eb1311006bf2d1abc1ceedfcc9cdcc1ad061769b602"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSecureTempZip.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1660f1460af348032c97bc023227fa8d16141027264ab99f80e668b4f89c155"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebea3269b0a8c20f7aa0209a744701b64450972b54f62410ff65ba17aac0cf04"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf084e6a0ecaa14ef4e5aaaaf61abfbe64b52f9a6b67c73191f709d07ffdbf5d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb31665bcb16ca27f5e1faa45ca3bee6f3b533f974d0f1f8560444c3c876b469"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"4047e0d373eb5c1989ebdb4e4a4ced8b53665e76bb7c0176acc7d688fa3fbb18"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"705170dfa70878b4557f6bbbc7a704e13b2692483dedd49727406f4890cdcebf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/TestPOIXMLProperties.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1fb5982d8894d8d908ba7192d7fa717737f64c08eea7a29bf390ce696dfc000"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XDDF/UserModel/TestXDDFColor.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"0de32b843d3c28a208a687b9cb6826a41a65e904c43b004fed9c9eb706d0dfe5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XDDF/UserModel/Text/TestXDDFTextRun.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1f7e1830ba027c1e2dfb7aa306eb78f1bdb706f02d8f9c515954c15ea8087f0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/TestSXSSFCell.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"2891647612684a6eff3e20450c3f5849b6c2ea7858bddf3a15a2ceb76f73d4b2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38f6226ce1113697b6b15f08a2b2abbd4a6d43f6b9954b69fe5ad095f21b251"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"914ce1d4f7940c711bb7056904aeb985bf09033bb0d2d52204c35b03b6a289e5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":2753}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7bd5b26966dee50cf8621654e07c197577f113fb3ffcee45eacb20f89c82e0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFComment.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"77988633fcb458e0b33af5d471872975e2afb1f2aba3f20cf564d2807054e9df"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb4190e9c1f118520c590c8ece88885722058817a253fc47e67720c433463ccd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFShapeName.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c053c36d49a26e226b6629f1eb8b3f2c4f89e6202874a7edf850c043b14ae6e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSimpleShape.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"b996d0e9b90981188f8776331e9392adda71bc45aed00b9e46d32e9e457f2dd5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFHeader.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"785df91342e46a4264d550074daa28f8fe714f40b66d55eec8574c50eb7389db"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"4849a383b87b3b33bd4c08fc0d716d702e9dc1667ac7d86607389e3c33c407cb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea52c005fdeb9e7ccfa0f48173f71f7c19581310653b2cf4016699071170682e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":1051}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9da169790b8c2a7df0a368488e7ab06fd2ac93d6188746ef5e6290d873a4a6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccb24d2244132ea3ea933f0ee506438ab3c9c0d026bdf7fe09d130224c25602"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f868394c67aba482f03f5d61c4a6b224fd01bc286367d9e921e17f89911e6dc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/SpreadsheetDrawing.cs"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"86944d12ce433b204086fd187f9322d1a1fd93a7a907c86a394defbdc8e1b3e2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Table.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"06163cb13166da3585412c20f137ed54f1187c14301d75ddb1c5dd37bce8959f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":1065}}}],"partialFingerprints":{"codehealthFindingId/v1":"353bb4b047a46a3ee5eba5156b09fe2c0c8e88b7d576d67c3c175faa67790c56"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":4325}}}],"partialFingerprints":{"codehealthFindingId/v1":"027a35c2fa95ed9f808a5f16d8c225dfde2dc603705d9da9dcfb84af18db4ba6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/OfficeDrawing.cs"},"region":{"startLine":2196}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b33746256a3624e559dfb159a34199d96ff8d75df8dd63e7b0f24586e01e988"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Numbering.cs"},"region":{"startLine":971}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea25f6dab97cb75932429f6b43071de0e9b2457b93b5c7f468a4277cae7acca6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":2719}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4ec4f150649277d0a2e85a2267d412c3a65bc708d3529d71cbd23660f71b159"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":7909}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aae33f888e51ada385183185c057b2620477ada5ae6965957f0994c0980d2fa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"c940bb74e19467d2107077774a700c927571436277183b8771a00655d07f2738"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherContainerRecord.cs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ffea4893395b30a2a21015eec995dab83f6fb17aa0359a318b53f314c71f9e3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Crypto/Biff8EncryptionKey.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"6069ff3039cbd540becef48398919b227d1959a716a58e327a802f94c6ebc6e8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/DefaultRowHeightRecord.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ef524499271cd3738daae676641322ddaeddf6df49c03ab8297507746437d8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/DefaultRowHeightRecord.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"aca7e8d79f4c0d45e5b840f1303e49431f837a223c689fd8f91c95f30325ef87"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc63ebf7d721ac0d29933b4320b16c3b089be8f1bec67ad4a25372cec99838ac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"81102cf3c8376705b59637dab9a9abda476599c529bf5c291d4ad04d346b1fdd"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1250}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7a489c258f32c3d149da35869135bd1d1b1b68aa05ecb499bdcd6203dd6803"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/FormulaRecord.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c62f5d9212582588c640213d6921baac91db8a4690dbe35d886a190a694070"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/InterfaceHdrRecord.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"a123a8e987aeb2b42eb526b6795f65f602c9a6053333b65a5adcca009b245f4e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/NameRecord.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"3abaf74ef7408b001feea1ee4c4791154cb119ff381b6e5d0f7266512b44d08b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ObjRecord.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b47948592a4b7396cae05514d529a0e97e4e27d806c8d56996180a4740a6cde8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/PageBreakRecord.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d84998424664d7f8fe006b3f9cf059120622d44e7da02bb983161e269e9e582"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/RecordFactoryInputStream.cs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5439679801c36b6767daf37d8d269eeb91534af5ad831a6ac98ab62ba75b472"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFShape.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a0199976d1abbc82cf9ceec26e0ee3d4588b3526538fe59efd645a80c6d7e24"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSheetConditionalFormatting.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f0f8664b0fe88deda0e7ec79b28a049f1782b8f5010a14ea23f227234503d56"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSDocument.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e40b031a4386e4d74cabded430ae75f8ebca156d4472546ec623bf5e0bb4beb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/OPOIFSFileSystem.cs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3bcb82680b002aa9b8de08712886f2e3682a2efd4b399d62e3c871268a0916a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Format/CellDateFormatter.cs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"d01d8d67340fc6c13e07022df385301e9c7ee3db0718a9baae5b7b5d03216fb0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e28df34fa53cf8f8eee309066dea74d9d3936e657a020f66f7170cd94cc6ba5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellRangeAddressBase.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80f1ba544e685568a26418994ced738915c066b452e8509c40e4e4b7d36e042"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"a329d2bb3ecce7f958bf760c12b08aeea9993ce35868f9c69e4d74c49fed0a44"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a1b4358faf6e2ce957675430d65f8c103e9ba097e013dbe01e7f3c0be1dce1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ac81dcbe3fcbd5696c1d359fce32fef6c1846110978b29426ad4f76e38df69"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"25935ddd2ba067a3c82999730e62c28a7ed7c288b0195ca6a1c4bd2391eeb8ec"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":853}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fc149d8fd1709a3b49e95b14dd11c30f7b36ab900fa8abe6ca7529a6320eb58"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/HexRead.cs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"15a42977d5a86b3caba177aad43b11eede092bd1bbadd8c78137ced6196ee509"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/EnvelopedSignatureFacet.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a9196f70d9e7fa3ce25f40a3dac14c73ce29c523da56e53e6c2d32e68e0f020"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad662ad6d5243d089abda24e3b24bd13b7cb894cdbdc61cce2958fab7a784cf5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"89755acc98960f92ef5e3450ac3ec05ccd513a298174a9faefb29a40febd5e07"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb6e73f117ac2de2658f4ddb901c32cf33d2d3c42a555c0d0ba4febdcfc2a4e4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"c53be27ec3a25c5c8cd37fc8b010fe336646ed2e8cefdd4fc87142a1b42f177b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a245b7691dfbde3f09a276e136159635c968ccfe1f0d44207d66327782f523"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"215132ba4184a91f6119cbf98b8086c710983ed61402e97fcc49e0a9edfb98fb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd5ee81c6f7e2ace52ed3484d5454abd4f48afb3b1fe8a686796edb242f5ec9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf430db35db134fc52d034dfc4681390eae61c738093fb707648387f882c9c6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/OOXMLURIDereferencer.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"033e205f36197c3f04034b100892e545210f2bf528c1428586ec0a3241ac0928"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"8623db5e79953ec27175c2adeb1a42170223760d86eff8e6b93d8573bce112b9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a5a2cb92b11e8b9709d0e67db5b843bc9d441764fa4fcd0dcb6eca58b971089"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b3a349c900eca499fd0bb2017a825b202b5b5b0992565a90c68e25e5de97b2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2a60879bb99a1ca97eb905620c542e9c7c7a8e642444a438b42f8812a7dc1ba"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d73ee24e2d1afad833b202c2e3da007edb631e808240e95ebfbabc3327b5694"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureMarshalListener.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aec4db67b57aaeed3eb58fa967d4e04d734b4dfdaf2cdbae2e8059d44e106fe"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd41c0857d34d2b348db608445528bf916e3357b33a4f96215b0b4b75396d61f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFGraphicFrame.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bef548d3576cbdb0d9ed2f8cff37ba9a11e5c9fe15741883e939894228d591"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/ParagraphAlignment.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"7039b2d4a0344e3fe2f01870ba0c0536d62f9fe1ec627d51735b44ce04044cf0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/TextAlignment.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a0d39bba7d302e69424d25576a67eb9cd496ff1e30f2c4a5ca23d69ede5f851"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFComments.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d279171486dd6e4004801003b72b588e2e7816e3ff1910a2e8c3e6c49fd4d0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestUnicode.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"152b0ba05a0a54deed50bea2cd96b92584f16ef6a5d862ffb916a61d1a5770da"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Model/TestRVA.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f1311209561f9a96ca3f19ad08ff5c85a69a1ee67ab1e0f770cb49ae36f135"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/Crypto/TestRC4.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b016a47f8cc5f34dbf4d642ce1b2a9de969e5b7b4c83f7a727ae15e2650b9ef"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFSheet.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c717859bb74487b1a1d2dc64fec5943094e594b2cf3cdfc5fe85ca985a79944"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFSheet.cs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2cfc19d930f007fc74402878bdc381f60f9f29e59ebf21be9c9ba48cd5028f8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/TestDateUtil.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff07fff710153cc0c04ea9498e4a6124db426a082bf327222779c8ac6b43f3b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Util/NumberRenderingSpreadsheetGenerator.cs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"99faa08e86b6d5c0eb080434c7a0f3a59f10467d883aa716fe03d7292c061055"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/Util/TestLittleEndian.cs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d4fc2e01cc5f2f9121060929e60bfc48e99b2d21d6661acadd0f426da63434"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0cb97a09e8e8bd949a77a924792d85bc33782ed3a964c4e104d28d985a86e8b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca18d90ced8521fbdeda0f8b6d3ae737716bbd3f840c97939fb4dbb99afe0384"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XDDF/UserModel/Text/TestXDDFTextRun.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"35461a2fe8373e3156593ba035fc3e4d808b77fe141b5b72b099277efc8e9f91"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XDDF/UserModel/Text/TestXDDFTextRun.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1efd1321f446ae7410ed13eac38793e5aac9bf15ad69c19494080f52a3df3a63"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":1749}}}],"partialFingerprints":{"codehealthFindingId/v1":"3792a20c3dca29609bc82fbf1cd11762c9be844f03e6920234687e962f574d8a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":1758}}}],"partialFingerprints":{"codehealthFindingId/v1":"b394c2f8a8938b42d7a1c263fff3a739158d04db21adc85914ed409f2ee6e85a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3c7caf0772b5ac203c1e6231b6cf28a1cc74f341d299d0bf1a531503be8924"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"03533b817c54da98ab7450c2b280a443f6db42973a57a821b773f13ba06c6a03"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"05dbe1c97114ac58080009d27025c5becb4ef4819c0e63e3f806d7804ca9cea1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //  TODO the initial elements of schemaField and mapField must be ensured somewhere else - or is there a save default!? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/CustomXmlMappings.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ebd36d0246e5bd32c95e11e021cc12917b2ac2c8a46d8887f6c4334e02276e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO ensure initialization = new XmlElement(); // 1..1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/CustomXmlMappings.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"6611dd32b708cc117933811358845c7bea7685152eb3e525eb652941a9acb623"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO add namespaceUri \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2292fee3480553827350c0256ca45cebdbcd98fa1d939b940c6ea7f2e0f3601"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO add namespaceUri \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheRecords.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"93c8066fbf38a75e04edae65f4da2cad8e257c4b5b1b9ce434d92a8a607658c4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 17 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotTableDefinition.cs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"d99f0b09d7fcdc6d2cd31e2f521da2bfedadbbd7b7ac86f7f334fe0e915efb8a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 17 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":1405}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a623dd85f916ada768099106eed86726442ee335c2504447b0d96c708de935"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 17 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Vlookup.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c115de5d040b8cfb1b97c795b38fe817576cca168b09831a8367a6a32465bb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 17 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESXLSignatureFacet.cs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"48172056fea2a2bcb7811514e6088e63ae82e28e0927da5e04a2ec0fa39a7092"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 17 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestBugzillaIssues.cs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"47bedfb14465c5cfce533aa5d5d47e75e25ee6a5e7ff139cbdd5e41f4257adc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: diff has-space case and no-space case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_Rst.cs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"00f08dbc8a7c02fed2bbe47fd001f535a374a1d5b07deffd10eaae04063c0a50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // 0..1 TODO: Type is ST_Guid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Sheet/CT_Comment.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"7575cbdbf0c87b25a6fdbc750db5d6072b8aaac63517070c39c99387fb155a27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO change all the uses theme to use uint instead of signed integer variants \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Colors.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0b1066f5c37a4d72a0825f05c8fb3894209e624b725f3dccfb1d977a2dcd0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO change all the uses theme to use uint instead of signed integer variants \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Colors.cs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"440b47016973b38930b3f9b2fde336754b28383c3727b37ab52e67c3d73554b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: NPOI  duplication code, fix it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Fill.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a8a0966c07b1ff2b3718c379f52c0a6e19ff1ce9dacb465dafc421bc8f8fb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO remove \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/Main.cs"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe973387ca44dcfb6f431b1fa91df622627592df75508c1bb6ce664bad6061f"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable format \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":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"be80f9a4c7d7e1399539f3c9e99554de1affd6abd1e1413c67efb26a52d4096b"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable format \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":"OpenXmlFormats/Wordprocessing/Paragraph.cs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"58cee6915911b7070bac4c8b4517b97571316ef75d2060bb14e1da23c1bffe48"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable format \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":"OpenXmlFormats/Wordprocessing/Run.cs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df1a3c7732ce54c0294e0cecb9088319b438b53eb759d09e4391ab12a8b9101"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 19 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f00ef4cb0a499e0b041bbaf1b793639177d3690a166c1766903a9e0af5e46a0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"8929e8bd9dc4dbb19996d34a43bec99b552796890a7026e3964a4268e81d00ee"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"89d2933e1009612d441a20e97043a95a7b68c88dfebc930993f17938c917ea23"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/FilteringDirectoryNode.cs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d0a5657b3a44232fc5376fd027a863a4b1975d774f9cc7e7ffd9d3d9d93fd2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba79b6dfa2f32115aaeb6e7d48e2fe1e8902de929948f753ce89bc18e75cf44"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20911fe096ceb507b8fde90e27fed0dba18b6c9baf171b8bcfd044d31300fea"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFComment.cs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"3df419764731674f128cfc90677b2b9e146fac7ecdb09d9bdbe399cf919a52ee"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFComment.cs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"f72f146c46d56c968bcde6d44c20497877dd2c357c3644914aeae5c88ddd9bbb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"23533e0b7d123cf501a734322da3825f2d48f71c3695ee0ac7a181cbdf827ca7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 20 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a065acf3739dabaa1bcb32475a0258b346ebcc285d2a162fb55a0ca77e4598"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 16 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":3050}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b840596aa7746279601793bdd696b04522e0d0aaaf35e369cb29c597faf133"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 16 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1145}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9829e5e6dd61a813609422ff3248483fd5e44dcfb5dabb1207bb6ce196fba0d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 14 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":5189}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9e15a76545574d80d8720a4f9b4c072c3b8d6cea6da90a6f6265b756a754d0f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 14 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1187}}}],"partialFingerprints":{"codehealthFindingId/v1":"43233e414341a0ff224c31b6cb7e08aff48d4f277db11b5cccb86c7e4711e8d7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 23 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Settings.cs"},"region":{"startLine":5204}}}],"partialFingerprints":{"codehealthFindingId/v1":"724e32b3e17374314ccebb8106c6cd5dd6b2c062554449fea07d0221c5cae137"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 22 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Styles.cs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"df4acb02f6db21e1c014039678e63277863574bf193915a9e2b7d25ae48552aa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 22 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Services/TSPTimeStampService.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"27ee79517e9480dced78e83ec99335b72765b28ae3c74eb84fdbcf55a4c06480"}},{"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":"main/Common/UserModel/Fonts/FontCharset.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2dc5e136fca81a2cdf0169575a787fbd2a0f9bb0a8dcdac2f8263975cc599f"}},{"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":"main/POIFS/Crypt/Standard/StandardDecryptor.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"f151f549468ccca0eb13d2aa6f026df3c534a84320cb34fdfbaa78cfd9f47829"}},{"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":"main/POIFS/Crypt/Standard/StandardEncryptor.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffaafd1a2b2ced6e6758dd64cf8d5ae1d459e15d8ead3b0f95c0c93f5f1db424"}},{"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":"main/Util/POILogFactory.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"a09f9e457d0f3ece49b7591164966ebd0f7a1d06e7b5dd115d29979b8fc91643"}},{"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":"ooxml/XSSF/Streaming/SheetDataWriter.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0074d3e948eaac9da3e2817e4cc45ea80de8f748c092607b1597302e3e5b69f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this part is strange - it doesn\u0027t make sense to compare \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherArrayProperty.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"625b59cffbec4355bd244ab37b69f66955fde6cb39916b6a31694cd00c7dfa9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - keep looping? Do we expect multiple matches? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherContainerRecord.cs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"8707ebd9879e54e0ca9b94d086c6ba6c5c8d23978e4c35b6c158f710ec2a7470"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetChildIterator"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/DDF/EscherContainerRecord.cs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7741ede3e94318d54378d42f63c7b0ec1c71ef0b636405b77bd5224b8380039"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO fix warnings: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/GlobalSuppressions.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b0b6571dc53e58b7c05909be9c2f3b54fd4c476919ec117167cd18764a11aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO fix warnings: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/GlobalSuppressions.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"36b805e615ebd98b89ef0048818642d5670b5c2d282f42875438ef9a9b7d8e9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: apply fix that is proposed in the code: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/GlobalSuppressions.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c0597a8f1b456f1993d961c2b687ac9989c8da5a87d93098aa5997b64039b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix needs some minutes, because the constructor adds itself to the given parameter BlockList. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/GlobalSuppressions.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d0ab18ac838757588fb4242317ba8083881da74d540ad3dc0ba1787c01d3142"}},{"ruleId":"D17","level":"warning","message":{"text":"BareSuppressMessage repeated 76 times in one file: The identical BareSuppressMessage (\u0060System.Diagnostics.CodeAnalysis.SuppressMessage\u0060) appears 76 times in one file \u2014 one decision applied repeatedly (e.g. the same rule silenced on every overload of a fluent API), not 76 independent debts. Decide it once \u2014 at the type or project level, or by fixing the underlying pattern \u2014 rather than occurrence-by-occurrence. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/GlobalSuppressions.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"66bfba54d9a9307e3aced772590451390f33f94ffd5540885f8232d7dce9f67e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Some files, such as TestVisioWithCodepage.vsd, are currently"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/CodePageString.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"77be9b5a0233c92622f6f28a7c8f13b8bdc2e5b69e865de6f476e9ca53fd5943"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/CodePageString.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbaa654e0134866487ae70832b63b77f6be262d96f121225b1beff73e280785c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFRow.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"c66398b507f8e9b097d8b53e8e1421fdda88263bbaa9b52dd5a94ad455e73523"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLDocumentPart.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d53806b71ba00e57f4e7b07c689f18e1789dddd636221db3b16468f7ae1b368"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLDocumentPart.cs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"19d4795d357d73ec8be32484093edcf9b2e5f7d91bf8710de86a214468bfbd16"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/CalculationChain.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8ac7bb579ba4bf54847ca7c1b27a74df3d6dc61e01ee1ef9ab3f2351698328a"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/CommentsTable.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6d8a4f60c4b53991bb9369133e3075821b511d27efb903cace0c3fdc74ed06"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/ExternalLinksTable.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"e52fea0dfc43e9e69337732136004a66248f8cdc475609a1be0ec6abe6efde9c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/MapInfo.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94b0c966ee4a2533b64565b2f93cdd9fb0bf4ff73f0924e25bd7a4c96899b97"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7d6b0416c108cb1eb0843eaa4d3171762f66628d2fb796ea3a75d37540e806"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/SingleXmlCells.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"b79dc4b057227d3dd2d63e38f4c3145a2ec7c9154190ff6b5ded870c299df61d"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"c22a622c32314d15adc02386fe562248b4e836f138357544e2c9343e886e6af4"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/ThemesTable.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"809519c133b8940106a99376bd417ee0ccf94abee6d5c1058dfe081946e1c5a7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFChartSheet.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"98717c7591612c4e6b95518b62141c7460eff6c6994a9d7dd410f557b518444c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e38a47cc01cb6284c92377711d707f58eadd6531c38b73a94965ba91547866"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFPictureData.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b2bbe396a6d6a7c644a02c48cc4e6b16d2e8183b0ee5a110805e7f5152d764"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFPivotCache.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2611e93345a81e46dc79f90ee2fe046345b9bbb7325346ec1e3d914d56689fb"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFPivotCacheDefinition.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9189c2019fc850b7599939bcee2ba0a3732078b71168986ff69fe0deed1f3b"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFPivotCacheRecords.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"a801315fb6b5693add49027c66dcd276815d9297d71ff5d6dfa4f463b0116ae6"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFPivotTable.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"b247abd36a6ee47507b00562afddb6142b27ee60b473db5f592ec9c16646c2b2"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTable.cs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8386113981ba0482fbe3bc71895890ac15e51bf5dc8ea6e46856b99a9b2fe5a"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFVBAPart.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb7988dafea4b8f5a0490e61be2239b571dbdc431834bfdc479606b686bbefc"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFVMLDrawing.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af32e013002cee2cc042f1514d02801a50c6bf221872b370eb7b658e66c481e"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFFooter.cs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb8f14da81df8a1e7019a534a0e731bc602053e6ad4818b2ee0008ac3d73bf7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFFootnotes.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"71dbf01e622ed87ce8c709ac5e45192ad00825f502c703b86c64e5b931651cac"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFHeader.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9e67e3c64e6092df86e21d507893200dcb4348c1b7b7bdf42118d297f5fce3"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFHeaderFooter.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac546cd464da258a770a4ffe9ebdc127db2e826523b0d8d1df2d4ff6ace6526a"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFNumbering.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"923165e6e7206370ac6348f50ae99b0fbb40e49e10327a9000c604a55974bdd4"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFSettings.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ed5e238fb9cb0a0625abd0af98f95f8919d8b6cf318c0b30f0a1b5d268084a8"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFStyles.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"48dd670cd21793fe3156329191171480cf532902f0cac328a90174537ce5b359"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] MutableProperty"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/MutableProperty.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"caf149bcee3d140ef2e501f7c1df2b54c1de8a8fd00634b9431fecf2c45930f2"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] MutablePropertySet"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/MutablePropertySet.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f405b14993e352823dbf03c96f71743102041b4879a33edba96cea6376c343e"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] MutableSection"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/MutableSection.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bef135d851f8252e7f9bec5901f7d3b81205c4236b89f361fe055185b48e90e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /* FIXME (3): Ensure that at most \u0022length\u0022 bytes are read. */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/PropertySet.cs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e68fa4740a5e85d33265cf02ff13a788b2a81e434685c36bdb89d807c308f0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /* FIXME (3): Ensure that at most \u0022length\u0022 bytes are read. */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/PropertySet.cs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"113a35baa1cb5d0f532cb77a0e45b5ac859805608be856c51d6c9166b3e7786a"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] CreateSummaryInformation"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/PropertySetFactory.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b75be6a602799601f0ab45beed7dc8fba2991dcefafaf935fea0f3d1f98b4e"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] CreateDocumentSummaryInformation"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/PropertySetFactory.cs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0bcc10e6034ec8096c2a26a18fe7c876ac0e9abd39969a7291eec519ae8aaae"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] SpecialPropertySet"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/SpecialPropertySet.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"4023ebcb301311493561b5a39b7cc90cb26749512c162fb6d0cbe27e9f7985a0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /* FIXME: */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/SummaryInformation.cs"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad35ab3755a576c0057dc5c05e5d137a535110c40247e6bcef0fc63d09ed47f8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: unsigned \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/TypeWriter.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"d19b0abe5fd947063dc6be14fac35db5b4a273170e8c384306ec279205ecfa24"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TypeWriter"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/TypeWriter.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a654f607ab608a2d4097bdfec262cf858f9e884e836a09affb9782f237d6b7a1"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] WriteToStream"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/TypeWriter.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"122ac87bf9814373f130a96174e30f891273a24d599e0b7add6119b33b47eca7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 12 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HPSF/VariantSupport.cs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"246131d7bf8a2381914261c12542db6e75bf6218594bcbfece74ffad9edd31e5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 12 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellRangeUtil.cs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"e741007dc566c6c8977df2fc92f7838b1e0aaeca5b5860621846c9085be1fea7"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 12 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ae2fd766fdf249ff38372c62d64296aea0dbee155ac5821a273ab8d751cf68"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 12 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/DDF/TestEscherDump.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf6d4620145cc0d6e046e98a797e2741b0b6d5419a4890389e48e970949454a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 12 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XDDF/UserModel/TestNecessaryOOXMLClasses.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b30e9d959eee176f50715ac8418056b927dfe4a51bda458a9b5552c9a2d2e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Find object to match nrec.GetShapeId() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Extractor/EventBasedExcelExtractor.cs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"841a1110a530aa45b6049db70a2a69973b078eec66506fb20e81beb069cbaee6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO track the XFs and Format Strings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Extractor/OldExcelExtractor.cs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"228f649084b7dab0177ef6d3858f4f5aba1548131c93166a01da23bbd3b523ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Need to fetch / use format strings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Extractor/OldExcelExtractor.cs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f34516203d8559f1069ed5e3502ed47fb09892d8e06f30a7166c48063a3a1f0"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DrawingManager"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/DrawingManager.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62ef379aca1e1076f0592f8e36bdb307b9a1ef62af89c97dcf0e9ad69d79ef1"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] AllocateShapeId"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/DrawingManager2.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f1c99a19c909a8a725c5af61bc88d5034e7e98dd3e63ec4a0a407d0edcc87a2"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] AllocateShapeId"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/DrawingManager2.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb2d948d9da6dfdbc73679d343c005c6f1815de797c448099ad725e53ac86571"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add Pattern constants to record \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalChart.cs"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"53dd4307087b08c8802df7025d0144d21007b095c0c11221b41e9aac884280a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add Pattern constants to record \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFChart.cs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea3af4d12ea4ac2b4e838b66c2ed02ba953a3126a0e72973b6af3039563097c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Is it legal for dims record to be missing? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb888a5c8ede341340404221c4affce1866a00273f939f10fbf4b542ce5fada3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - take chart streams off into separate java objects \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"959547a3c97a6723ca1f77b513f9ca51f3a2a6b57f6f525a68a7f1ac587a10be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - would like to keep the chart aggregate packed, but one unit test needs attention \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dced39da531680aafa443ad1af36556dbf3b2a34a7ba534fd0678c28b330166"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - adjust data validations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalSheet.cs"},"region":{"startLine":2164}}}],"partialFingerprints":{"codehealthFindingId/v1":"df214f48f1065a32a85aa81431da0e81414022011ef574604efe0eb47f190f74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - do we need \u0022this.records.Remove(...);\u0022 similar to that in this.RemoveName(int namenum) {}? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed4b70b4977aa4463c5931aeacab7d72e9783814b1a11ca892beb14788b6b97d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - what does \u0027-1\u0027 mean here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":2289}}}],"partialFingerprints":{"codehealthFindingId/v1":"17722edeed0e428c88c7691c4fea667b485de6bc5bdac4ab833c673a80432a87"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CreateInterfaceHdr"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1311}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e4099d7ed147b410729b728aae235e4ad1447884c17ca925585f08da8b96ebd"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CreateInterfaceEnd"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/InternalWorkbook.cs"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"edfc4b0aae75d9082f06908ee12c10c97d60c234feae07db251608b7e51ec4e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO make this class into a record aggregate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/LinkTable.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"0798f671d081cfb9dd1669b5e40befa33689f47b1f2a634167674ae81dcc41c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - would be nice to Remove this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/LinkTable.cs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"47cbc10e59a9caf18cb9776f265589b5eb2fdb23349720c315096a368891e05e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - do we need \u0022Workbook.records.Remove(...);\u0022 similar to that in Workbook.RemoveName(int namenum) {}? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/LinkTable.cs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"7669ee8f380b0bba94ec9ffc349e169455de35860d7f2442c9ddd2fae0237fd6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - this Is messy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/LinkTable.cs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"3123351015fb5fff1c04812a9995fbf05fc6b7a954c0fed786690c38d7e76af0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - simplify logic using a generalised record ordering \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Model/RecordOrderer.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c640402302163f06d362db28a48a9424b504e069f57c5d322a0da6f4da95ac2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO -(MAR-2008) can this ever happen? Write junit"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/CFRecordsAggregate.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a8acb821a34b0044b3d58a4de380c4abd10b55f3902929253a1270ff3150f1"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CreateCFAggregate"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/CFRecordsAggregate.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"766f5ce52b8438211cc5ec1cbdddfad000c5266fa3b4055f2b35e7a732ac2c31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: write StartBlockRecord \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/Chart/FrameAggregate.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd53676db6d9f7727496ed7e4799d9f7b2fa63d74e2cd0cfab3a0e02da016831"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CollapseColInfoRecords"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/ColumnInfoRecordsAggregate.cs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"71706ef03c6f8ba9c0a46adcd79f096f60fbfc152be125938398432beed51348"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: correct it, SeriesIndexRecord will appear in a separate chart sheet that contains a single 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":"main/HSSF/Record/Aggregates/RowRecordsAggregate.cs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"5efe45c1117155263e7e9a4e1e17da1837b91f0c160e21f173b73ff4696fad61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO - fix file \u002215228.xls\u0022 so it opens in Excel after rewriting with POI \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Aggregates/SharedValueManager.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"05a8e2779acf166c94636bccc961e76c284695565885b694c018c01b6dfff155"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Parse this, see #58150"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/CFRule12Record.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1632453752ab5acbedcd17a5fde6d4395b4f39ffda506ee6fe23a6f30454438"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Update ext_formatting_length \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/CFRule12Record.cs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"642fda7ed23ca143b7d453039026f688258a815b448bc06f60e4c1d61d508976"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Decode this properly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/CFRuleBase.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d3bb817105b46a1fbbc459ec09f748dbc8ca2b8eeca710d5b3af804f6c4550"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - seems like the sign bit of this field might be used for some other purpose \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/CRNCountRecord.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"db452537630c1df9659acbbc725d87ea5a4a2b520d52173d4b7a12acfc55bbeb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - process \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Common/FeatSmartTag.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c5ae3625dcfebec7f9b3713579990e1d848f93fa8e099fb84effa50e8ff8ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - make this when the compatibility version is Removed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Common/UnicodeString.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"65cf01b73bd5733cc020d92657afcb7b3cdea51d3e81b6249510cbb06e0b6f2c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Write"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ContinueRecord.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b86511d69169b47b0cb2f6b96030bf587ec49e2e62e60b9a91252e8a19d7b1c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Write"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/IOUtils.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"8329072cc6266aa2b2f8744b372c85d41f026cad435b7c9bd888dc7ca8133cd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - find out about chart BOFs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Crypto/Biff8DecryptingStream.cs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"82291f35ed90c8bad7fe7afbba5cf04943b244f9dc575e549afa79af090a23f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - find out about chart BOFs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/Crypto/Biff8RC4.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4480988929e487397087a0bd5ca030a75463bd191826813014dcdc078631f4a"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CustomField"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/CustomField.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e6e4afd2f176d5623cc3a2bbef512fb2c098d706237a2cf363ef5549f62857"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - make immutable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/DBCellRecord.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f992ca973e2933d2cec8e82c6b420accb5a224f8560c0cee3cb2d4928346c0f"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ProcessContinueRecord"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/DrawingRecord.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"922e300699e912bf06b5ec3c1e759859d45619f2b5dd586a62f60670c028aa36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Unknown stuff at the front.  TODO: Confirm that it\u0027s a short[] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EmbeddedObjectRefSubRecord.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eab55c629a3ed888a507558f64e989cdea46ab9ce6af7d29f434dbfa3f27a34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider making a utility class for these.  I\u0027ve discovered the same field ordering \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EmbeddedObjectRefSubRecord.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b9df1e7162024f37457c0f149f581d8d4b11701f13c4672500a94cc6028095c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO proper clone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EmbeddedObjectRefSubRecord.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"374a35d7213495792e86b42f85aa25bea17d31ef79dfe31f41599597d55db8d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: fix this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"31dd5b8c75ca710ec173fa2a232989383395fd969fe853c478fd6041a1dcf1dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO: Support Converting our records \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":998}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e2b64d98ec368a2a9c170da5c1a23d1722f20779784854d2040c766a0b20c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //            // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"14cd209d57511a1a088afd41491d1adb901caebfef1848c31ecf5e3f3f9837c8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"9019933b54170ecfbf71d542580ca8f4dc794591e43e94abd1a9fd402bf7fb36"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ExternalNameRecord.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab0768e5e569c9de27b65fb5febc28c4f6e11503d4885a5076b8e54a52a55534"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSimpleShape.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e001e16a3e00ba7ac994ace73375acaa4192e45c65380828c4f3c7074304f32"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Util/HSSFColor.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d9d94ac7fd66ae18a2984e500de618f812f8a2300ad52f609047a0129b140e6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/XYNumericFunction.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b65b93ff3701da97e0e2e2195f5f3e63ac59c919a969ff9041e23e0683e673"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/Office2010SignatureFacet.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"db02d0133423879afafa6ac3f4332dac1a4621306f064a0368929a298e718740"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea0d12869395166dc30b0e70959b75d38a079303a519c17926a3a9ce325c1d72"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea906680aa7c0157ba63c6ccf5aa211fcd81fbc4706859392905e025c1feec0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fd4eb2f15cbb6d430bec71ea4444cb9548a5196ec18bf1a3c86efd1c7554319"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFNumbering.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"4db91803c2d2bbb6a19a61df00d70043a00e1bd87f86938dddb5796c4da946bb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/TestPackage.cs"},"region":{"startLine":1034}}}],"partialFingerprints":{"codehealthFindingId/v1":"e41ee46a44141acca89980481c6a097f72d447f947d6b1257beef03fa388c58d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 21 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/EscherAggregate.cs"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1861f12debcae25a6d292f45702be9a12e0fa33c232f48178c34685d5807292"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - determine exact conditions when formula Is present \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ExternalNameRecord.cs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"9585e63da2d450233cfc3be56cf9fb4b01c775bd683ec969b50d339bcb055ffd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO ... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/FeatHdrRecord.cs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"871133d88236d42ba42e0afe0c57d22f12e5fea2b27220c0d2dba27b3c360671"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO ... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/FeatRecord.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0ded87a411c899baf9178816e4992712967ed0fd4b44982aa0efa845830552a"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: //HACK: do a \u0022cheat\u0022 Clone, see Record.java for more information \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/FeatHdrRecord.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"a24d51c071c36001db3167c6f25a81f70fe1e14c71482516321f6255bf41e996"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: //HACK: do a \u0022cheat\u0022 Clone, see Record.java for more information \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/FeatRecord.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"b60a02908c08336b5b6c6d8b11f1ee460c8d6f9c037509462cf319eaabd150b7"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: //HACK: do a \u0022cheat\u0022 Clone, see Record.java for more information \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/HeaderFooterRecord.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"2acbe48651428c0d4b6398c75f8c20d0e51a0178e952b319cd0a124269f4965b"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: //HACK: do a \u0022cheat\u0022 Clone, see Record.java for more information \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UserSViewBegin.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"1486b08ccc3856c044521a540ada90a0351b831577b95db56b72bb6484640fd4"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: //HACK: do a \u0022cheat\u0022 Clone, see Record.java for more information \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UserSViewEnd.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"937f4cb06e72f5ca2d6f9bb42220d9d1819325ae1d718c263d541065496553ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Current examples(3) from junits only have zero Length username. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/FileSharingRecord.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"638bba8a0d7cbb83ecab042a829b4003fbb215320ad84c66359811d105198103"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - junit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/FileSharingRecord.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ed498ab5b645b7f8be4e8306c4900772abab83b33ef44ae76be4563b27d4d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - junit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Sumproduct.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d69d5d0bf65338afe7c20a212dfd0f7ffe96e87a471bda3eed30344811da007"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - junit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/ValueEvaluationHelper.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"940dada789205a5312107f7c6b561d3d23399724f04a4844ae538bc600dd0f61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n                         * TODO: make sense of the remaining bytes\n                         * According to the spec they consist of:\n                         * 1. 16-byte  GUID: This field MUST equal\n                         *    {0xF4815879, 0x1D3B, 0x487F, 0xAF, 0x2C, 0x82, 0x5D, 0xC4, 0x85, 0x27, 0x63}\n                         * 2. Serial version, this field MUST equal 0 if present.\n                         * 3. URI Flags\n                         */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/HyperlinkRecord.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"40693d08b1d24e0832e865d771fdeba3ea25d72f837787ebab6405e5dabe20bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO const \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/HyperlinkRecord.cs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5ac75b8b0c0e87c759e63f0fdd8972041a9a2bac4ee3ab29410d4150ca21c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO const \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/HyperlinkRecord.cs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b089c670a830e7e5a72854f0f2c36866cbed8b97ecbca29f9c04de4fc2e14f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - change to not be partially initialised \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/NameRecord.cs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e40e5e62c219e4ed74b0517bcf9eac3864b23b5678bc6028c08f09fa1e1cfad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - ensure 2 sub-records (ftCmo 15h, and ftEnd 00h) are always created \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ObjRecord.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"559c4d1e98db7a31cd1b3017d2a0519af5e603d614088b73d4a659573af06823"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - problems with OBJ sub-records stream \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/ObjRecord.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"88c98f081c0cab8ce6f9108ee86b026a75069b289ccacfa9167bf54efe021fcb"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] AddAll"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/RecordFactory.cs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f5da86d0dbfc38355dafbc6f0bdd907d6eb40486ad4dd614ae7d59c3e64254"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CheckZeros"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/RecordFactory.cs"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"a69553dca028142daecdc3f3d1f0a82742c7199255dde2d28464e9c91716d6e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: bitfield candidate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/StyleRecord.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad10d995e3d1ce691734c27f29476f88dce0cd6666bd9c939d09dad12f4b0576"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo sanity Check exception to make sure we\u0027re one or the other \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/StyleRecord.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"03cb89f2e8608d9bf8feb3391f62aad0fe41f04045c946c0e834a92bb1d67109"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO - put unknown OBJ sub-records in a different class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UnknownRecord.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e9517f8e94e7c6cad47e47097a3fc2aed7ab05b6547cbae231f3cfb82dcbf5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Look up more of these in the latest [MS-XLS] doc and move to getBiffName \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/UnknownRecord.cs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4df4c656449dc5b4d4311f5c7b7d3d4e9d89f8f6b2f9be9102e181bf1d00028"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] SetCellErrorValue"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFCell.cs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d0ed769bd55223838dd52f9eb13d8e3aaa7477a096ae89baaf636cef8a1a9a0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: This cast can be avoided. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFDataValidation.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"a415e39abd593df1026f84ac269a4a46ca1e877be1a3f8c5ac878551d4dd77f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Update this to expose first and last sheet indexes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFEvaluationWorkbook.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3bc163a756006030fdc0ce30e584b731fb8a202949b39a7dc6f6a16704ebef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - is this right? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFEvaluationWorkbook.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e687ebce14484e9e645ebbb04e7abfd9f4dc984d4d534ea3a41145dcbc1ce4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - is this right? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/BaseXSSFEvaluationWorkbook.cs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee0327645779640f93179c5d68a69bfdceef67eee1282c4f0d9471176f51eb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - support charts properly in usermodel \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFPatriarch.cs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34d3a914a4924c15ae6a8f52bfb1f6ad639506379947d585645285107002c14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add trailing \\u0000? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFPicture.cs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0e83a78fe5b94bbe3687072c9db43fc633e1754c772c5bcf361871aa3963493"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - ditch this constructor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFRow.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a354613b177b23e7c8dc13e69df7bf518b37b3ea9648e3adaf9575f86c18a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - RowRecord column boundaries need to be updated for cell comments too \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFRow.cs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"d799de9bb1c288f2db6994d404eb27e3318871d78681f95c4153a028eb938a2e"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] FindFirstCell"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFRow.cs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a97b67a6bfe205c31d7782c562a3946101cbf6fde82cfc906aec946a4689c4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this may be faster if it looped over array formulas directly rather than looping over each cell in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"05ec0f84a865d882c285a1baead55b04a14d84bc486597b6fb20ea514f2ae760"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] IsGridsPrinted"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"338a183711d6c8937e8d8a8c97a453523b9985ca016dc23b5aa9bf8430349756"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] SetZoom"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":1323}}}],"partialFingerprints":{"codehealthFindingId/v1":"828cff21f3d176a3ac6f7e8d76f8a97e58ad94e41dcd3b286807a3e219b6a7b1"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ShiftMerged"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSheet.cs"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"3504e488fdca9a0239d404d0a73eff0d866ced400ab23ab1ab2aed536d13520b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO add other shape types which can not contain text \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFSimpleShape.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd9218ce78082429c2937d983441ccb56db85ad43de84bcad4d981bd46d56ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - maybe same logic required for other/all built-in name records \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"77e2b87f6ec20202acc9e31db1dceae0fded7220cc08782de407b7659fcba3e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Add similar sanity Check to Ensure that Sheet.SerializeIndexRecord() does not Write mis-aligned offsets either \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":1513}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f5860ad4ae20ca7a6f5d9c4f5c3d32655335f6fbfdb45d8bf8b42b1c87d970d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Some kind of structure. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":2148}}}],"partialFingerprints":{"codehealthFindingId/v1":"53219bc3195afc6ff85b05f14f94568acaa1cf825f725ca89c301a038b546786"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] SetSheetHidden"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":769}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a80eeea336ca274bb468eda98a725a8b6f91dc8d7a80c72177c7d9a12c2ae9"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] SetSheetHidden"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87d824f67e10c21a1869606167112de3254c5de12586284498ffa0d8b8d3317"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] SetSheetHidden"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb33279fa6db5b4ccae53a4ec79808583c3834ad14cd7ced7122b48da9562733"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] RootDirectory"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HSSFWorkbook.cs"},"region":{"startLine":2415}}}],"partialFingerprints":{"codehealthFindingId/v1":"b701534003ec1dc43b6c03b0852f842ef2fc21f4790bb0d3f31378281038b3ce"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ALL_FIELDS"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/HeaderFooter.cs"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0be6e4ccf971520b60dbd5d9576780a6e292ea1c65092cd3a30ac1015f0fc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /* TODO - SixLabors.Fonts:\n        public static FontDetails GetFontDetails(Font font)\n        {\n            // If we haven\u0027t alReady identified out font metrics file,\n            //  figure out which one to use and Load it\n            if (fontMetricsProps == null)\n            {\n                Stream metricsIn = null;\n                try\n                {\n                    fontMetricsProps = new Properties();\n\n                    // Check to see if the font metric file was specified\n                    //  as a system property\n                    String propFileName = null;\n                    try\n                    {\n                        propFileName = ConfigurationManager.AppSettings[\u0022font.metrics.filename\u0022];\n                    }\n                    catch(Exception) { }\n\n                    if (propFileName != null)\n                    {\n                        \n                        if (!File.Exists(propFileName))\n                            throw new FileNotFoundException(\u0022font_metrics.properties not found at path \u0022 \u002B Path.GetFullPath(propFileName));\n                        metricsIn = typeof (StaticFontMetrics).Assembly.GetManifestResourceStream (FONT_METRICS_PROPERTIES_FILE_NAME);\n                    }\n                    else\n                    {\n                        // Use the built-in font metrics file off the classpath\n                        metricsIn = typeof (StaticFontMetrics).Assembly.GetManifestResourceStream (FONT_METRICS_PROPERTIES_FILE_NAME);\n                        if (metricsIn == null)\n                            throw new FileNotFoundException(\u0022font_metrics.properties not found in classpath\u0022);\n                    }\n                    fontMetricsProps.Load(metricsIn);\n                }\n                catch (IOException e)\n                {\n                    throw new Exception(\u0022Could not Load font metrics: \u0022 \u002B e.Message);\n                }\n                finally\n                {\n                    if (metricsIn != null)\n                    {\n                        try\n                        {\n                            metricsIn.Close();\n                        }\n                        catch (IOException)\n                        {\n                        \n                        }\n                    }\n                }\n            }\n\n            // Grab the base name of the font they\u0027ve asked about\n            String fontName = font.FontFamily.Name;\n\n            // Some fonts support plain/bold/italic/bolditalic variants\n            // Others have different font instances for bold etc\n            // (eg font.dialog.plain.* vs font.Californian FB Bold.*)\n            String fontStyle = \u0022\u0022;\n            //if(font.IsPlain())  fontStyle \u002B= \u0022plain\u0022;\n            if (font.Bold) fontStyle \u002B= \u0022bold\u0022;\n            if (font.Italic) fontStyle \u002B= \u0022italic\u0022;\n\n            // Do we have a definition for this font with just the name?\n            // If not, Check with the font style Added\n            if (fontMetricsProps[FontDetails.BuildFontHeightProperty(fontName)] == null \u0026\u0026\n            fontMetricsProps[FontDetails.BuildFontHeightProperty(fontName \u002B \u0022.\u0022 \u002B fontStyle)] != null)\n            {\n                // Need to Add on the style to the font name\n                fontName \u002B= \u0022.\u0022 \u002B fontStyle;\n            }\n\n            // Get the details on this font\n            if (fontDetailsMap[fontName] == null)\n            {\n                FontDetails fontDetails = FontDetails.Create(fontName, fontMetricsProps);\n                fontDetailsMap[fontName]= fontDetails;\n                return fontDetails;\n            }\n            else\n            {\n                return (FontDetails)fontDetailsMap[fontName];\n            }\n\n        }\n        */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/UserModel/StaticFontMetrics.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"f890abfd50121aeb5057f1f34f72f853f7089377cc4278d40c378dbdcaf241bc"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] HSSFCellUtil"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Util/HSSFCellUtil.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"747b60f195125f42dfd75cfeea3a7c4cee692ce8705eb76dfced49ccbbae7752"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO make subclass instances immutable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Util/HSSFColor.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3e06ff220589ec1ea09e8c4b586957c22d76a96b4a4d8cef5c3be2dcc5ef016"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: charset conversion (see ecma spec) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/CryptoFunctions.cs"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"83277e1b265f3f91180ae1cf62a4729ba06e0eb8263639b9b7336af6ece389d2"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] registerBouncyCastle"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/CryptoFunctions.cs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7308206fd37ad18d6c4056c6cbbd81f1e391eed43650e0bd26804abb7643fc4"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetAlgorithm"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/EncryptionHeader.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e80d99e3ba0a66781558bd4bf04dce79659c7d38a522b081557cfc4ebb0a4c7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetHashAlgorithm"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/EncryptionHeader.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"06eef7451572b71374c0fcfd3115d2839303cfcd12a9e9b92168965bc910243f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetProviderType"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/EncryptionHeader.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5de02de0e14cc074dbf25f047531075debdfa27e21adaa14ca5308c0dacf3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: check and Trim/pad the hashes to 32 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/Standard/StandardDecryptor.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"df5bfa85ad61a5726c5a52a84350b9b4b701d854bc8d265f641aa8abeab7fecc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: any properties??? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/Standard/StandardEncryptor.cs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"54dafef86601b04662c6f5ed1f34ca49522eda78885bc01b8de026da00cb8955"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: any properties??? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/Standard/StandardEncryptor.cs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e2f75563ebca31847100d9c82fb060b1605671f774792490773007c19daf999"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Work out how to report this, given we can\u0027t change the method signature... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/DirectoryNode.cs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"e555654f1785dcc855f7389a1d19d26258d33a915bc4f8085945a6eccca20724"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] HasOOXMLHeader"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/DocumentFactoryHelper.cs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bcbf6325c3f705feb535687b103caa5f39862aa87f0c09c084e758b79bb7d5f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CopyNodes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/EntryUtils.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4e9eb784d4e2733e9745fe5443be6185ef89a4c5495875dfd1e057b607c5a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Do this better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NDocumentInputStream.cs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"e625436012761dd1c5c92937f7b8fd29b430f67bf17e2aa2d610285a7d63696d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //// TODO Replace with a buffer up to the mini stream size, then streaming write \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSDocument.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"0708dd5f5b63949ca1014a3efd34a2d137f82f429a700be369c63e402c965820"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Decide if we can handle these better whilst \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSFileSystem.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b92ada18e7068c26a577522606553a9e26acc1e95f18af68d6d88912ebee22d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Replace this with proper append support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSMiniStore.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb64821b552c57f66bf24efffaefb02eb78d0f6d9ae1bccc4da7e3ed7de13e67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Streaming write support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSStream.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"936e1b783d0002d89e920b37f1ea52a34bf84a017e50fab8126d2d9c1430ac5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO  then convert fixed sized write to use streaming internally \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSStream.cs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"76586e5eef8552ff560abf3538a062337be6d4aaa62c4dd3e6a165435461f374"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Append write support (probably streaming) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/NPOIFSStream.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"43ed3eb6255d220e69ac173c68eeb9ff24d5f64eab85c0fdf6d3b321b5194bda"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] POIFSDocumentReader"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/POIFSDocumentReader.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b87882dca51954d5454eebe4466d5ecdb01e1bd95ebff982e9421d66790f5fa"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] POIFSDocumentWriter"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/POIFSDocumentWriter.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"dce15f8d6818b5085cf1019e43cafba822b28b20a8ea08e134aa353b5ecff04a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Temporary workaround during #56791"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/POIFSFileSystem.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ce6412f51e43b799572dc5d3538a9a613c60f9408b61449b7e732ab0c29ad8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Make this nicer! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/POIFSFileSystem.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"1be24bc774165b69b011253ba76e6e8980756d40fdb32fb3e9511bde58541465"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Refactor this to fetch dir then do the rest \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Macros/VBAMacroReader.cs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"66abfae38113ef6822f4e3ea80196c00fa44e141a0511321c8ceeb089680faf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: try add clean method for ByteBuffer class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/NIO/FileBackedDataSource.cs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"10682551d47930b86618073085fb9147cdce41a0ef8be1026d5ed7a357f1b4f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO return null instead of raising an unexpected exception (CA1065) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Storage/RawDataBlock.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"968bf0ea87e31f21e9a521bfcaf17a04df3f496151faea434dcb730b955ac5ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: if decimalPoint is null (-\u003E index == -1), return the whole list? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Format/CellNumberFormatter.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc882264f69ccb4c0cdbebdf4e2efa3d3fc52a11e2ab45ef74a09e25b4011bd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - find a way to choose the correct date format \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Atp/DateParser.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fbc46b70964bd070e5e2e4d1cbe98f91d383e12bb3ee82d840581ef37af9828"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] EvaluateFormulaCellEnum"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/BaseFormulaEvaluator.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f5173af017b24a7d45d93f6897cbb54174a1b9bad38c67b780feb15de636f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - update OOO document to include this value \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Constant/ConstantValueParser.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"64ba7375e43519995f145690c98f0f58530eb1312249b3b84d28193e86cff39b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - is this the best way to represent \u0027EMPTY\u0027? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Constant/ConstantValueParser.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d5be2bad7a87ea22ed9973ad73a0b351cd550b1809aabdfec8a23d105b1d387"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Find / Replace all occurrences \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/BoolEval.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"303ac6742263edbcec352a66beb8a200834c5f3d19404d6671f41241aaf8abf2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: check if this is Java 9 compatible ... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/Forked/ForkedEvaluator.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"d081c7b4ea0b5720bf64b45c772c3732c8c5506e1836d6456d46843fcb3826b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: limit to 15 decimal places \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/NumberEval.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"720771af06629b9d476642804a4cae1b12e6b6acf87f07c718beb75ccf364692"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //// TODO - support notation like \u00271E3\u0027 (==1000) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/OperandResolver.cs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"84858caa6034edd836848d09e8adc3cfb2fda22e119ad604c5b638b4a362add7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - remove \u0027ve == null\u0027 condition once AreaEval is fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Eval/OperandResolver.cs"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"aadcb44d7692ecee0edb845101a89a418fe650e86190511eda3c0cf628a1fb18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - if we are confident that this sanity check is not required, we can Remove \u0027value\u0027 from plain value cache entry \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/EvaluationCache.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fe1d60fae7d76cfe69ac142c71e6b0d32eaa66015a79bc6af7c8a09d9a72cf8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: anything else, we don\u0027t handle yet, such as top 10 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/EvaluationConditionalFormatRule.cs"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"22dda73fd2597372430cd49fc02233ebf8bb92e9aaceb657c3e048c66c5bcd68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - consider deleting this class and letting CellEvaluationFrame take care of itself \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/EvaluationTracker.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ad58bffed0df7a95657b39cadfc27f32cea06551e9e4d1a67c0024ebc84540"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        // TODO - this seems to occur when IntersectionPtg is present \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Formula.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc564151d204823d7d39c734b7086f66112878ac28e27cf5c2d181f195b931a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO Livshen\u0027s code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbce7392415890dba94b15dc373de4260f28eab67bcc6dcf056868d2e01e18be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO End of Livshen\u0027s code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1079}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b17919e0f5406c2dc4c18a285f50053368b66d34eff2b8df8b0d960869fd00f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - what about NameX ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"74e081d92bb57ce3d8f6b0f3e22c70b0a9ce19ae9646752e110dbfbc7104f41d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO avoid StringIndexOutOfBounds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaParser.cs"},"region":{"startLine":1209}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c990c2d41c3a373f8a61481a5f4ba8296fcb82dca8850cdd53ae30829bc4ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - what about MemNoMemPtg? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaRenderer.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4027e4227778e9d5328fdadb32a4f27610a101dae28b01fd48236178384be9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Put comment and throw exception in ToFormulaString() of these classes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaRenderer.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"1329ffd1d9f3945cafc5b124291104a7cfaa449630a9ae296f10cc8533c3704b"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CreateForRowShift"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/FormulaShifter.cs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5b57ce0f07102eeed5c9adf11f014188bc49a17037a46ebf198e0d1faf423e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - make POI use IsVolatile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Function/FunctionMetadataReader.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"167d2388585d52ba9a1881966c352a833f72510021dd67c978a3e123758ee82f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO R1C1 style is not yet supported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Address.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"f670ef6e66a286f9250f30c2eff7406ac2d4057bfdb66810d2dfb8b85c6fed93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Double.compare(n, N) == 0, DOSE THE \u0022==\u0022 operator equals Double.compare \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/AggregateFunction.cs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"a802639f74d5cf2a0f25199dd05744e409c28549644955c07a526e83c6260ddf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Figure out if we\u0027re in 1900 or 1904 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/CalendarFieldFunction.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"b18de754bce231de8fbb41f1bc452594d8413a2b2cc05b6d72eb546be3676753"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check whether the condition cell contains a formula and return #VALUE! if it doesn\u0027t. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/DStarRunner.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9465aca9f65465fc67967752062c4e82ad1030e0793b8186343dd7df9390863"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Identify if we\u0027re doing 1900 or 1904 date windowing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/DateFunc.cs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a2e711a6337b3f543928e7a4a00bcae961d71b925cc3240886757513ce7e267"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX fix 1900/1904 problem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/DateFunc.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc3c68e3d3d493c257d9283726cc9abe00550c879a9592f666653d9b64dbb312"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetValueFromArea"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Index.cs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0bf051a4de708c064b7890f4ca6aeebfc1767402d3bd0b48465be8f463342f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO move parseBoolean to OperandResolver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/LookupUtils.cs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c8515727aed1755b0fa311b1aa30488be16b9ef96b4bbd61b5c0d14a9ae5ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Is binary search used for (match_type==\u002B1) ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Match.cs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc8299d30831e5580321bffe87e2fb326d048fb6dba79f5f58945d1f4fe00cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO this doesn\u0027t seem right.  Fix or Add comment. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/MultiOperandNumericFunction.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f6a90825e4be98841b26e01bbb1d3e326e9c1965bcb4a13268d5cde814a18d"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Evaluate"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Npv.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac91a16dd70baa048f52fc98f22ae05a4062204b73fd0639324151af5e38fe7e"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Evaluate"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Npv.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a988d4e90fd0e19669034201509112b6174c5bc17b94a4c9603d873c6bdd11"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Evaluate"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Npv.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9811e8391c777679588f3cced34a0625d14b0d4c1739785d9da75c20d6dddbb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:  Double.compare(base, Math.E) == 0, , DOSE THE \u0022==\u0022 operator equals Double.compare \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Numeric/Log.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"af6a6d2c9accfc59a44c1a7041f1100a199f15de9f87da952b7c38f85d3d8eb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - junit to prove last arg must be srcColumnIndex and not srcRowIndex \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Sumif.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"8054452f15c3d1352546b3a0e6d249f65a6210b394ac54befb86ccf3090b81e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - shouldn\u0027t BlankEval.INSTANCE be used always instead of null? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Sumproduct.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6fd0a15ba2c3a4c872b103411017c270259ada59da856ac52912c66b19e274"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    //TODO: simulate DecimalFormat class in java. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/Text/Text.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c91ec7a4824dbd8565af689bd624e483be842f8ecf52a07a7f8622d956530d8"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // (XXX 1904-windowing not respected) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/Functions/WeekdayFunc.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c4aa2811c777e3713f01572d2f6de9318e22a233c4170359fd49bff2932de2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO is any Token transformation required under the various ref operators? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/OperandClassTransformer.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"8988cc9756a6bcd93d9d61e07b08d79d16ef895610368c184af0a09ee03c0304"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // ugly typecast - TODO - make spReadsheet version more easily accessible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/OperationEvaluationContext.cs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b1bad47d1521525ab6c465fef39e37a19989ee0e226470a8c7c875c2a0621c5"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/AreaPtg.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1a7c5aecbf826da4042661618960baed6d35156624a47cebae3e88150e8de2"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/AreaPtgBase.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"4096c9f7074b1ebae2ff8f22cbe392df273eb4b4ef8f55a31a30c8da7b9c5117"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFColor.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ad22358abf239acb14527d1b3cbc3093007ff3c188d60fd449ef29f4beea249"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFColor.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ac60077b1c34df3200c7ed325a310552bca0a09ca26b2ad78a6dd714640c68"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":1364}}}],"partialFingerprints":{"codehealthFindingId/v1":"4476d9bedc3da0826ad652b7266e7e525258cb3d8e9e66552388ddf8202a662d"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFPictureData.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff32e8c0d516911c466680e2062eebdcb0fe6f47ca0dbda5be8bbc18abc7a3f"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cfcc559ee9c52ac658566f4788fdbd9809645271dd81dc9157de8ef0f07da05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - how is \u0027empty value\u0027 represented in formulas? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/ArrayPtg.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d328e123c4138e666d554d909b0f3e2fd439c43de0dd1bd75f47f8822fdad26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Not sure how to format this. -- DN \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/MemAreaPtg.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc9fb18b274bf81eb1ed790a15621230e4fd7def16a96d7b5486559c584c35ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - 2 seems wrong (Jun 2008).  Maybe this method is not relevant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/PowerPtg.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e22e56eba8fe5473f3ae300953460539ca4163aa13044276d84b1d4600e561d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - not a real Ptg \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/Ptg.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5a2f8f67662262bb9dab289e224b9da51237766011a2c754ca9a5fb66d8f98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO - all base tokens are logically immutable, but AttrPtg needs some clean-up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/PTG/Ptg.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ea840588799a7c7be29aa1cee710a446fe14b920d85611ca7450e0cf6b6a91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n         * Apply a custom filter\n         *\n         * \u003Cp\u003E\n         * A custom AutoFilter specifies an operator and a value.\n         * There can be at most two customFilters specified, and in that case the parent element\n         * specifies whether the two conditions are joined by \u0027and\u0027 or \u0027or\u0027. For any cells whose\n         * values do not meet the specified criteria, the corresponding rows shall be hidden from\n         * view when the filter is applied.\n         * \u003C/p\u003E\n         *\n         * \u003Cp\u003E\n         * Example:\n         * \u003Cblockquote\u003E\u003Cpre\u003E\n         *  AutoFilter filter = sheet.setAutoFilter(CellRangeAddress.ValueOf(\u0022A1:F200\u0022));\n         *  filter.ApplyFilter(0, FilterOperator.GreaterThanOrEqual\u0022, \u00220.2\u0022);\n         *  filter.ApplyFilter(1, FilterOperator.LessThanOrEqual\u0022\u0022, \u00220.5\u0022);\n         * \u003C/pre\u003E\u003C/blockquote\u003E\n         * \u003C/p\u003E\n         *\n         * @param columnIndex 0-based column index\n         * @param operator the operator to apply\n         * @param criteria top or bottom value used in the filter criteria.\n         *\n         * TODO YK: think how to combine AutoFilter with with DataValidationConstraint, they are really close relatives\n         * void ApplyFilter(int columnIndex, FilterOperator operator, String criteria);\n         */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/AutoFilter.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"76b3fb2e4813662641e41b0be26ba26db781329f02998f175507dfe00f3f0eae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - one junit relies on these values which seems incorrect \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/BuiltinFormats.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"5881a9870d9a10ffde845f2d883ff68cf600b03c0c182316659d1487d7729551"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Going forward, we should really merge the logic between the two classes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8795101789a907538a453659c4153cb6975f05c0e8ea0979da49e47174e376d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - when does this occur? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DataFormatter.cs"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35f1caa71808adc8d7584ae6892da0d8a94ffef0ec024040f0b277f69e6c9a9"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetJavaDate"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"626f44245bf9358b7c46123bc356f1487eab78e1a49c3377ceeea5436686e23c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetJavaDate"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e996dd1f701526e9ff6ee036dbcb4249ecebe94e453361f2722a325a75449f9"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetJavaCalendar"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/DateUtil.cs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"50f7551d3695e8d3779c6fea51871a6fb0e76324c7e55c48893bb95ad09613cc"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetRowEnumerator"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/Sheet.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cce3b03d5d3b1226f1f0cdf5619ff912181417ccee0c1e21827d63838ff4a26"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ITextbox"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/UserModel/Textbox.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95c7c17b07b25e7208a307d0d548f309c827d444de9082b57ed5952ba924de3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - probably shouldn\u0027t initialize area ref when text is really a cell ref \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/AreaReference.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"f77c4c2296a32f454796aa5c929f0f33d494ce729dba19bfb71e5482d26abc40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - whole row refs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/AreaReference.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"95681678f84b4a5ccce3374ce484d338a0dbbdebbb3c64fba4f18eb63db8a614"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - refactor cell reference parsing logic to one place. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/AreaReference.cs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24a674561d3c90e9a67bc5f45cd3ab58a2e89786e92bb7eb50886d1fcb52d24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - refactor cell reference parsing logic to one place. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellReference.cs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e5cd840f5bb082aa2d4e9236e2af2d4d2ecf8816d1d1f67ff48fe8b9b94af37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - are references like \u0022Sheet1!A1:Sheet1:B2\u0022 ever valid? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/AreaReference.cs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af5b0b6947eca503f5a82ef743f5ec5d863cd9d8fd03f28e01c60c29aaaa159"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: breaks if Address Contains a sheet name or dollar signs from an absolute CellReference \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellAddress.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9977311fde538552bbcb204e96aa87fe6335a91de8acd9dfdcd9ece3cefc23ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //// TODO - write junit test for this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellRangeUtil.cs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"4320b826b446fe75454b8af2b23fd98c1eb2c3e4c071de2435f7e820849090b9"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ToArray"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellRangeUtil.cs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"198ed24c52ed556f70ed5ee77fe323d9ab04ab6a87b774c73609d348e6fa123f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: _sheetName may be null, depending on the entry point. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellReference.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef28664a743c798affa0cfbc530f57892f5159fbc1a2b1d5210f29090a97a4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - \u0022-1\u0022 is a special value being temporarily used for whole row and whole column area references. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellReference.cs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a36a1ca1cda9c5a1bfdc31f4f27cb19f72e48baa829d3f716d4731c663784a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellReference.cs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd0fd8d598edf425b8e404d8c4e6af02e4a5bd7ea911f39155bf2a7fa6ac2be6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7f6623bb131219aab8d349e5fb366c596759f8ac53fe2c283acb6c47d40b149"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Extractor/TestOldExcelExtractor.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"53fdfb42492e474948dccf69dfcce2e62484dbe807f13ba81aa00ce12ab8ff08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Extractor/TestOldExcelExtractor.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7cb9bd3dd4c78bcdb9c14175d0352d53caca040609fd97ee6fde030ff4e0c62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Model/TestThemesTable.cs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bcd4d95e6fc5052abaa4f2ca90f79ab83c23e7b1bccac8338ffc5a0712b2c09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":1337}}}],"partialFingerprints":{"codehealthFindingId/v1":"c17aa720cae1a857717d174223c8cf4492163ff7636354f00d7a4b6545153057"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFFormulaEvaluation.cs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"10208f65111acb7c20792b888b5ba9746dfbbbeb6e540f3f2186fb33e9154df8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFHeader.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e8aba29df60c4420e7f7d3dfe03aaf40bc983b074d8e53f902697caaeb712a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFHeader.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"eccfd31245904629908a68f1a33be44fd5648f9f3901e5ab62d4b96901a67da8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFHeader.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d79665f607f18581ad754bc5f37fc5a26cd8595e4cf41bd08c51e468465325b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFHeader.cs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3a62f732d0081b32e437fca914e9f6c169fd5d5c110601772148e0fc4169df4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/ZipFileAssert.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"0abba472ff1c55a23fc9160c6fa6635dc6937a15c2df98217814ef8ae9f7f660"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:shift cells \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2820442e768bcb718ac360eee942dfa449227f29d99c47d106d8e0f6298a20e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:shift cells \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"12a7ec8c0b443d5281a790503278e9e353c13720582dc6a9c95dbcbc0740b7de"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Cached value may be stale \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/CellUtil.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b085402022e7b5eb1993526f77c7b5217133ef0929f0ca5b917de313c70ad3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - what about values between (10\u003Csup\u003E14\u003C/sup\u003E-0.5) and (10\u003Csup\u003E14\u003C/sup\u003E-0.05) ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/MutableFPNumber.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1ea0e84960f5bec4a9108c35d9769dc71883b0d3f46a8106e5dc33f98473ba"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetBorderLeft"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/RegionUtil.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5a9aaaba3c963d5ac6c329556bde9fb71872446e4ff1f3fbadf46e6d2aac7b2"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetBorderRight"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/RegionUtil.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"3214debe7f6f1cacf08d512272b447c6032206bc4e40234c1aac0ecf491ebddc"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetBorderBottom"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/RegionUtil.cs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb1b1588a686965879a61a157f89f75cd857314e28376ea5bcf240645d91c411"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetBorderTop"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/RegionUtil.cs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e00efe34e2f9f1eaf62a882268b78439052dd7744cf5871afb395f46140120e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support rich text fragments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"f812473950d59edcc0de249c29f1583b868eb644cd58739e3ae4052e1df92511"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support rich text fragments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestBugzillaIssues.cs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe47d1535e6021fd86e3836f2c7ba608a98069d5a2917a9588258b5641bb65f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    TODO-Fonts: not supported: if (font.Underline == (byte)FontUnderlineType.SINGLE) str.AddAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, startIdx, endIdx); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"010e2b23092ecc5b61ee8cbcb4696e7131ad59a5471bdf4e54a96db0d78ace44"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ContainsCell"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/SheetUtil.cs"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"1396b6b5e2398f4d1a85f39e543beaaeb5a8d99e37aeed89f79398a6042740db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: to complete this method,we should implement SignedMutableBigInteger class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/BigInteger.cs"},"region":{"startLine":3190}}}],"partialFingerprints":{"codehealthFindingId/v1":"d96f360a2429b7c81e2178695c7aeb4ea6d6ff471099ad469abbd65b39aad221"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: this should work but maybe not. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Character.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb2ef0560a848cd480a340a735953834a3114d3544095af626a1cebe732d50fb"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] WriteAndClose"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/IOUtils.cs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"03204d4d4b05c540a4748c49f698196307cd47542eda1022fb90c0551a867f98"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] WriteAndClose"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/IOUtils.cs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cb5242618bbac79d43ee875d79d26af16a9ead29f806c2cd03c1e7325f7a988"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] WriteAndClose"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/IOUtils.cs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"47cd7a34e206c73171512adba060d90e748e04d38f32e8d1360bf505b20d4e85"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] WriteAndClose"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/IOUtils.cs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd9a0b4f6f5bea8fdb7d7aaea51bafe53ee34a3180ec5178860b9ea77e337ce6"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetDouble"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"9acc7bf8bfbec3dbb45c43e838e3e7e59b6a7db3cef7658c1a3b0b0c41a6f33d"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetLong"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"877710711dcbfa43e47b6d714ec987520e032c2b5ccb7d2bb4369c7db229ddf4"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetULong"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba0ec47e51f7b80c71f424b689abfcfdb73e133115ce96a2fcff7d42f9cc6d8"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] PutDouble"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ffe51c05134ae81c13185528ac56e6f581133e17e091438737047fa6395fec"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] PutLong"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa47f670ebb18f80187dc7135a4663e777944c92b71718eeb93cb33128cd878f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] PutULong"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7c2af2e25978817d366a6d42c3c6352b69304cbb194a7936297e72d417235f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] PutShortArray"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"a57c0e9ef3317f5d04771f5afe442408097ecf1f802acf35fb8cfff9aaa9081f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] PutUShort"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LittleEndian.cs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff08a5fffb85c68094b5498ee6b4baabf691fc3ade21b021b6f0869ea91dd014"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetLocaleCalendar"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LocaleUtil.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"71e1ea55101a35544a39eb33c89d6a01a1ab683780dd13df21291b36be191e3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //\t\t// TODO Can this case be made more efficient? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/PushbackInputStream.cs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e7a98685ac491fa39eb6d407010b32237ee5630af086bdc60c896f1745d8b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Can this case be made more efficient? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/PushbackStream.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"00dd8ed50ec3711d92e9ff425fef0b73298e4205af5eade62a124b0b7cf49406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Review these, and add to XWPFRun if possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/WP/UserModel/ICharacterRun.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf026acb11dcdecaba96f0a32da6b5ad82e16de574c1b9cdec08ec8d18c9a4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Implement justifaction in XWPF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/WP/UserModel/IParagraph.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"6049663ef003cddda217bc7e1428eeb901a56b434d97792c20b67d262869e5d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Expose the different page break related things, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/WP/UserModel/IParagraph.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ed5c1a0c8d3ad9708a92ae4b399c66363751c657168df78bdcb5cc8b138aebc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Make the HWPF and XWPF interface wrappers compatible for these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/WP/UserModel/IParagraph.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1cd4dcdf1fb7f332438f51284982c850d30f1022e75da033348fa350ed17004"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: calculate integrity hmac while Reading the stream \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Agile/AgileDecryptor.cs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"7464c1f0f8d92ac9e8f1fef4cc83b5b6ab12fa3d133572d79185ba4b38c1169b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Agile/AgileEncryptionVerifier.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"131bec80d4b574a6da61f53fbe874e9fea393ff470badd4e0a7bcefea49524b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Initialize headers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Agile/AgileEncryptor.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"b01fe1cd85b1f500a7f3b36d58396bbc18feb1c08bb87df0a762a1012071922b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add stream size parameter to GetDataStream() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Agile/AgileEncryptor.cs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b5b0f19e925dd48588472913e840363af4f6978bd979b6a73948d94c95a6be2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        // TODO: find a better way ... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/OOXMLSignatureFacet.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a224c6f3a7d0a8a1a22f17f8fcbfc85973eef4b7d7d6ee53e7d4d360c062cd"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: //         * XXX: not correct according to RFC 4514. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ceee5362ec19d83070b2bbe827d92a1fb2b4a91fab3530917b790fb79b2df3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        // TODO: check if issuerName is different on GetTBSCertificate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/Facets/XAdESSignatureFacet.cs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c69dd784d1babb718bed873be1d700c4e4a3544d3f3e9bff26df8571f65aa7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO: check for XXE \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"08fd5cc7eae1c2ec90ac91a4851f8b810b21139d9750d0c526cc17450053528c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        // TODO: replace with property when xml-sec patch is applied \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"0182c1c755e7e22222d591b809cdb2fc00203aaf168db170f152bfd421fd303f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // * TODO: we could be using DigestOutputStream here to optimize memory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"c833508c05f616dc4405eb822fe267200b0b18d576a1ce758c14c914ec95d40c"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetPackageRelationship"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLDocumentPart.cs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"c528f6806f1d4373fbe20477e95479274bf60abe4ad3f12e80a8a3765886e0f0"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] AddRelation"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLDocumentPart.cs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fb6c36b3fac7ed8e01330b62192bb5a9fd4f38e4fcf4a8ecc3b60c6bfaf9ea1"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CreateDocumentPart"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLFactory.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"69da1900a388d6dfcb3dd439ec9357e060cb2848929de3f4f71b87e0e56e00a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO Fetch the array values and output \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLPropertiesTextExtractor.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6416807a7ed2f874bfceed037695a4fcc8c8a52831bba821ee67dd72eb54504"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO Fetch the vector values and output \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLPropertiesTextExtractor.cs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd4193b080d5b2a7f76feb7b706786e04a6b551bd0c9c6609f16b00fe5aae4aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO Decode, if possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLPropertiesTextExtractor.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed656943a2a4629ea7876f7e32dc981a79ec7fca9e6faab3a30e2af31a325d83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO Decode, if possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLPropertiesTextExtractor.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87f5138765a0603a3db6ad7d363038c43e9815e8e60efc6feaab7c9a5a8fbe0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO Decode, if possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIXMLPropertiesTextExtractor.cs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb3b796fbb5a8d085b077841a9baab6fd82d360aa6bcec495d5f3c655fe98592"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: HSSFWorkbook workbook = ExcelToHtmlUtils.loadXls(xlsFile); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"7438fe66ab1b5ff31ebb744a1fedc8f1803ab561c45b4923320d20d59b2bfce5"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: enrich \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9cf9ae36b1b693dd53cc7deac38ebecca7a2725dea1a53ed8e0d82ef3b74f8c"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: enrich \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/SS/Converter/ExcelToHtmlConverter.cs"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8fc013cde9348268bfdafa3233579e5e62e634bee91d58aedd01e744ce82357"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: shall we support fill? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/SS/Converter/ExcelToHtmlUtils.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e396260cf24cd3d413ed1080ff196355cc84888f33de7b6e7236909e684eb5"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Create"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/SS/UserModel/WorkbookFactory.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc69944f3e787625d967f36585847908cfe2a20916dbde395e886cd473ab9e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO repeat above code for all kind of charts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Chart/XDDFChart.cs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"35467c0a875a529ed6e671a15a9cd01a9601f29d5b461691694055be1fa59073"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Is this casting(generic type Upcasting) right? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Chart/XDDFPieChartData.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"c551f2ed381e88c3dc60912ad9edd5f3417a8db68ce280b2c4e615546073c809"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetKumimoji"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Text/XDDFTextRun.cs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"42031cce16f3b08625d6fde0af3875fa01ce4f067b5c623862680cfe8ca9e997"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetBold"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Text/XDDFTextRun.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbd5888c5fdc9bbe91d04ae1c8f0d02b1ae71adc77005f719a4993b31c58c330"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetItalic"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Text/XDDFTextRun.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"26325759939f2b0586e30ec353c460de2df34832b8c10babb43af7bfa1460559"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 55 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/XDDFShapeProperties.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"19c4ad52d4c6700a36edd0ce5b13cae0d5b7053d7e6b95833867c0bc2e690364"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: range checking \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBCellHeader.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c0154afe98a57ac12b1ac7a78ac3486e85edc08dc23a96175dabd9b8c922bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: fill this out \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBCellHeader.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"652dce4352bb1b8981f829ea71db2c460d2d55af55253c0fade4c0085efaf49c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Convert this to generate an AreaReference \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBCellRange.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f24529e098cb5de16f5d44304a701063386ea1222b96439e4462050ad064a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO -- implement these as needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBRecordType.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"3074fa94a05425635c525ffa6561040750e82ede40b8ffd3294381abb3f33ca3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: parse phonetic strings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBRichStr.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdd17debc09883195435c8d6aeee6ab3345767634515726269cd1f0da278c25f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: implement this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBSheetHandler.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e315e346c4c18f394a2276c7e4404471a4e3d6a024af46b606afc8c45e5ce6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: needs test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBSheetHandler.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c16cacd801b08ed79a681736d2a9e04dd3af12966f7098efbf8a7b12c4b6353"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: All the PCDI and PCDIA \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBSheetHandler.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1f62b4976096a80307c8000577e566ede8f5c98b466a91e08b75fb3e826266b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO, read byte to figure out the type of error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBSheetHandler.cs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e1a6473996869cca434d0b33cef313d51e7bb746392747cde8799d6087f761c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO, read byte to figure out the type of error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBSheetHandler.cs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6792bc4a65d3ff4ce35b6a2db4c957b0ac49d8614f965e9793aeeeb3659e01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Move to LittleEndian? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Binary/XSSFBUtils.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1f0ea9f832d37b6fe007a8d78b565d3848eb1c45c7fe324063b0692bd0b4a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Save it somewhere \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21c1f136b63b1a9dce1e3e7959729614b17fe96685c95353bc35698f7ca67c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Retrieve the shared formula and tweak it to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a931a0bad3c1e51550f6005ff282e66349bb479912b45abdbdb1bfebb5a80a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Can these ever have formatting on them? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/EventUserModel/XSSFSheetXMLHandler.cs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde3c37545348bc204e307183806f228c7dbe7ff2b67ef9b8638f00d742e7996"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: inspect the CompObj record for more details, i.e. the content type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/EmbeddedExtractor.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"2378c55aa9f853cb050bb936ab9d1faa6a2ec1d0dbd039db6806b0965a194c6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: investigate if this is just an EMF-hack or if other formats are also embedded in EMF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/EmbeddedExtractor.cs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d89ca3e5779eeda890fd0ec78728ae4c0dd92a484ff4faf367aece5a1902b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: read the content type from CombObj stream \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/EmbeddedExtractor.cs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f63ab03a05dfa1c32fbad18934f887bb0b83a076f7ac43170fbb726fdccc21"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetIncludeSheetNames"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExcelExtractor.cs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"256d950fb589293630108e23e9ab2e114f4770b2076af6fc0fdb2c37f566351b"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] SetFormulasNotResults"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExcelExtractor.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f9ef4e3f81721424e2b12c5423d3513a9ef0e92f7715c0a17a6b40236ef0a63"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetIncludeCellComments"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExcelExtractor.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"5527a5f6eb591a8cd585cfa701befea3ba48f095cb845ca6748cfce6a3abcb00"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetIncludeHeadersFooters"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExcelExtractor.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ae075598fc914bcf5f17c9f021cb7d14c88896f8283537dfeeaed78f62982e4"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetIncludeTextBoxes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExcelExtractor.cs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b44d1261d96b9903a7f705f5b204a029a9ed2145ab02a0e745f1a18f5c65555"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:  implement filtering management in xpath \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Extractor/XSSFExportToXml.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cfff2da32fcf94f624533d0e80483b52c1970509dc00e1a3976c81ecf07dec4"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ReferenceUpdated"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/CommentsTable.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc96200c3db18993eab7de230609b29753eac27c4c9144d139c8b02d694ea67a"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] FindCellComment"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/CommentsTable.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4241d50d3622041d99caeb1312de71b7786beef96b968610603fda6ccb7cd4"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetCTComment"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/CommentsTable.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e0da174e13b37ef6ea14bbc209fb7c711f07dffd03141c65a8061ac2c4c4cc"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] NewComment"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/CommentsTable.cs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"87c1cf69d29852a53bc3a18c3c4a1addd897bf443f6767ff03d9bde9fc6f0a12"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] RemoveComment"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/CommentsTable.cs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"e751d320cc9d1c51637fce1d78960650d5f87adc7a1ca29a8db649e41d5d315b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Last seen data \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/ExternalLinksTable.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"840aafb19f45ec2cb2dc5f1ab9238a3c311a03f232c253f3c00aad85d5766e8f"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetEntryAt"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"a29ef3b91a246fcdbf80ebaf798b4a8cb0a725a0e53ab77a9746e9a14547380f"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] AddEntry"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2da6b6217c6ab6c05968551aecb34c649a5a69446677ed24f19d5857322cf6"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] Items"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/SharedStringsTable.cs"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f0e5a9c9e9b93edc5146d60345653f73aba09a79090fbc4450f68bb4236fba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: check for duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"3397175ebfeb6b750f393adedab0c4d22560231949472c4794b4d32ce1919328"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetNumberFormatAt"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"79cf9eb35b30cb511d74b06a020bb2ca190d0611054e1b46d4f92e18ca93c85c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] NumberFormatSize"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Model/StylesTable.cs"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe641b2ca58f810d7cfb315dd30683639db00fb7bb25bc8bb595e642ee1ef78"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: if cell belongs to a merged region, some of the merged region may have fallen outside of the random access window \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/AutoSizeColumnTracker.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e69e585274479d531abf64a62a6b7985e4f2cbf5592e4101df45ed1f905916f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: if cell belongs to a merged region, some of the merged region may have fallen outside of the random access window \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/AutoSizeColumnTracker.cs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"9770eb83e09641ba50376fefe64b9d81d09798076149c7753ae6f11f4e886b8b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Most cells are not merged, so calling getCellWidth twice re-computes the same value twice. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/AutoSizeColumnTracker.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"55626ef62fbb5654d5e4d88b38968fe14282e34e8e4e508158868100af36756e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Most cells are not merged, so calling getCellWidth twice re-computes the same value twice. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/AutoSizeColumnTracker.cs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"587704915f9018325a033f00ecfa5749162894ce268d7dc19593555f55e73d60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: implement correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFCell.cs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6484bf6b98cddb89f22570e3013e75e7ab76124d71a2f4e3b644a975b69cc97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: missing methods CreateExtendedColor() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFCreationHelper.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c2f8da60a8f2719fd391a36ccfe764b91cc0a4bd298cb96a17c12b987f9cd85"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CellTypeEnum"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFEvaluationCell.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"dace7a5afe04a1a55968e56af0bae5660bd9b9a416494cd4626464067b78ebd0"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetCachedFormulaResultTypeEnum"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFEvaluationCell.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa4159214841af66caea34d2b1f383a2bc60becab25650923a2f3c3e6417862"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fields should be private and use public property \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFSheet.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cf3730409c2fb0c57166709c84ccc41d0000099fab67a01afbb2382cf4d04c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFSheet.cs"},"region":{"startLine":832}}}],"partialFingerprints":{"codehealthFindingId/v1":"57a19e3fa1d674877af7cd1e5228c996dcd4b8a72426c4c6a9f9e9f2a0f4e40e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: review this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFSheet.cs"},"region":{"startLine":1370}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b6f45baad60a4906c41b7bbef9b3d5309d0ef81d17ad756f76f24af382979e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: missing method isDate1904, isHidden, setHidden \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"211072e6df4a370b93a84fd0fe848d2e8545fd8a9cf6230cfc09fe15fe451d46"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetNameAt"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa36b66b71516ae81e92ca59320a09f19d8d71da21822dff904d8fc197542d7"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetNameAt"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b5d3d6c42751f92dccfc2fdb8638eddba0cbe8320c111991d859d9490d95d64"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetNameIndex"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cd06439ca624a4bafa701b38f078b5c50eff9a6ba0fbdeedcd2cd314ac96737"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetNameIndex"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd04fda2f934403070db876e50f7f3737b4feb511d662083a0df9007436f8d33"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] RemoveName"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb845ff2ffef91d9621db913b16768f876c5595d4911b25821654ce636e7b1e5"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] RemoveName"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Streaming/SXSSFWorkbook.cs"},"region":{"startLine":883}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f395e1177c9dfbbe26e10bd8bc19f319af55c092d5a45e351183233196674d"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] RemoveName"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"433d014dc54516fe128cd465dddcca0d0f06f0e0cc60767e3ba8269740931f9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Return a more specialised form of this, see bug #56752"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/BaseXSSFEvaluationWorkbook.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"c46b1e566346f83eccd1a5daff232dee5cf26e36a2166f4c665b730aadb130c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Is this right? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/BaseXSSFEvaluationWorkbook.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c2a7f82afad1a03889a888523a6bdd101b3a31668db9004b26ca3a051455c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n         * TODO: data tables are stored at the workbook level in XSSF, but are bound to a single sheet.\n         *       The current code structure has them hanging off XSSFSheet, but formulas reference them\n         *       only by name (names are global, and case insensitive).\n         *       This map stores names as lower case for case-insensitive lookups.\n         *\n         * FIXME: Caching tables by name here for fast formula lookup means the map is out of date if\n         *       a table is renamed or added/removed to a sheet after the map is created.\n         *\n         *       Perhaps tables can be managed similar to PivotTable references above?\n         */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/BaseXSSFEvaluationWorkbook.cs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb4814e451e158eceea8a5726eae908bc7279423c25134615b43b234f45633b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use org.apache.commons.collections.map.CaseInsensitiveMap \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/BaseXSSFEvaluationWorkbook.cs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8a9b7a3293f44972e8941b27cb9ff32b0541365f0be129dde7761250d37cb01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - no idea if this is right \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/BaseXSSFEvaluationWorkbook.cs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab8ce47b4f96fc7bd5125ce3c49df77a73779eef673667f11d02f25420d8b08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: change the compare logic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Extensions/XSSFCellBorder.cs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"1844a24cb5b987d3ab41be7d89f44390bc86c0f4abd722ee49abba6c71b3e8fc"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ColumnHelper"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/ColumnHelper.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"7407c84ef41b1924d27c9913b687b882cdd76f4a44707f4b0fa1f5f5b632305e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: is \u0022velvetSweatshop\u0022 the default password? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/Helpers/XSSFPasswordHelper.cs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"608852aec1894f2e276637a07f9e27eca2900258fb8a07cbda4a5857db40ccce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO decide on a style ctxf \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFCellStyle.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"d09459174fd93d4e85f61be3a2b53943c8c600e9fc6db728c1b35def12129c6d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this method would be more useful if it could convert any Color to an XSSFColor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFColor.cs"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f6b0d33cc6869b8fdc7d078f2b37e968f33635f949cf6549441f2d7cd5eb1b5"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetRgb"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFColor.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"c244fe56ca909036ab72878b1c9ca77150e2cca9d656be1409c49b43e3975fb6"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetARgb"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFColor.cs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b5cc04595a80143d3fe3ddf5953c914e2604b20a2b54120515568eaf5ba932"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO How does XSSF encode this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDataBarFormatting.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddeaf7d4db9cc0fb9d06b346ca539bc6f2643329bef2c8d73a143da362cbb58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO How does XSSF encode this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDataBarFormatting.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"5526ff9cf89e62d0aa2548d57f6eb8f97335bf6ab50b0e1ed75238d0d69ee0fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO How does XSSF encode this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDataBarFormatting.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bc1fe0f8eadbb3e076dbe5b6f562ce586d1a19f4b8ec24287cf284e96fb130f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetFormat"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDataFormat.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd40e6d15a74e9cb86b02a1ee7bbdbd62bc7e847774a4a2324c827cb6ebadff8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: Need to confirm if this is not a formula. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDataValidationConstraint.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"9558b77102324d4a48c9d0c4d05c3d916692c252eec4c32e3b88892db275fa2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //YK: TODO: this is only a prototype \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDialogsheet.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"940876d215d93cc6aa34d1a60becb252d94745fa5bd03a57c2bd247a8be301b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle vflip/hflip \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"18aa56b778197ecbc5be20ce1c782f345eca3b93bb1183169220bbb787ee5af8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 30 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFDrawing.cs"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"49fc469da7af2a07a17147e3bcd52498688996e42fba9f683c96e51c64f0d4b6"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] Index"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFFont.cs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea8e53d87981e9e5a59cc0751f4b67bb0f204ff03753da8a6f1dde202e42496"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: there may be a better way to delegate this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFGraphicFrame.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7469276087c5e18302da2222013f0a1c3e9d588261e55266f06db10c756566"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: change to protected if/when SXSSFHyperlink class is created \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFHyperlink.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"501dcfbf7cc3e7dd47b36379b5e0f95cef8698988dbca923d0f53152035f49ba"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetCellRef"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFHyperlink.cs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c27b6ae008b51429f7a8a7b909e40d5c89e14f85639cfd67921d1396a5fdd7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] PictureData2"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFObjectData.cs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e37f31555577e3f89537888598ce79fb8cf7daf8feb462412b3d60356af5d0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: figure out what this should be? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFRelation.cs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b4c5298905517ab58bc1e34b0ec2cbb740015a43450eeb4a0e9cf0fed6e9021"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: figure out what this should be? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFRelation.cs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"012a055733c9b811983e473ed0a58026cb8fcf122e79c2729bac4b0eeb27d688"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: figure out what this should be? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFRelation.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"4370b570dab6ae5c30d9757aa3ef1b83ad800aa91ea666f42c5a9a404bd28202"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: remove type casting when copyCellFrom(Cell, CellCopyPolicy) is added to Cell interface \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFRow.cs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f8f86e2e525e7a0207ac902b66ed2b09c8fb04b0dd87d48abddc9946d52815"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: is this something that rowShifter could be doing? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFRow.cs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"e120487081a43852f88530f4a05e5fa8b1bba55f0e7b98994de3501edd09f91e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: is this something that rowShifter could be doing? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":3302}}}],"partialFingerprints":{"codehealthFindingId/v1":"7abf72cf713a0e54098c10a9279b5458bf5029c25a3581173bcdd5538b03fedd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: calculate bounding rectangle on anchor and set off/ext correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFShapeGroup.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f374f05ef0d62df1c4038365470be1e1e29d24b2782af39f67ce5364b31b37c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO make the two variable below private! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8d739a89ffd4862462941ee9a682c39bf3e9a13c2891d5a2a274d428ba3f0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: The following codes are not same as poi, re-do it?. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":2854}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d27cebfafad7bcc94cb9ec4775f0fd12b7d3c6a7259b9a09ba45c73ebfb2f5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: is special behavior needed if srcRows and destRows belong to the same sheets and the regions overlap? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":3265}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9070988ee77bfc237d5d583c0050b5577cd8fbd1022803c81048cbde511fb11"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: if srcRows contains gaps or null values, clear out those rows that will be overwritten \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":3274}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd8b2ef055e253ac400cf3b300db66e26ecb81cbf602809dfb25e3fccad2944a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this may be faster if it looped over array formulas \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":4987}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f1ce1af047aed4b825036330abc3c21fc37e75aea37a86795c02ad3f93c68bc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: (performance optimization) this should be moved outside the for-loop so that comments only needs to be iterated over once. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":5524}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4760f361bf6eb48c2d12d95cd392b3786d8f523ea37b0f43e52ed11100afec9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: (performance optimization) this should be moved outside the for-loop so that hyperlinks only needs to be iterated over once. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":5550}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8213af6ccfba7adfdb6cc10d5094a457b922dcf0708cdb0b95fcb54cb49168c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CreateClientAnchor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSheet.cs"},"region":{"startLine":6799}}}],"partialFingerprints":{"codehealthFindingId/v1":"122046da7bf4ad496fc59e91360bb060deb698410e77363faebe41410d24bd24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - instantiable superclass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"9488c04b4e09931e819fef91f24749a57eb028fc01ea05ebde06f7274635256d"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] GetXmlColumnPrs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTable.cs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce3783872dbefc61f4b7412c671415fed39b6cb3a690f62a9356f06d949f5fb"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 18 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextParagraph.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9950b3fd959f1c3e5cb41c4c44e30b9daf6cd49ec4bb2e42d3bd99e5335cf39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //Stream vmlsm = new EvilUnclosedBRFixingInputStream(is1); --TODO:: add later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFVMLDrawing.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"617356512cd765c161ebd894b8e40a8a6eb24d8f6f14d2ddc1762455218e9302"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: this is extra somehow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e03aba15003194c898cbe1575dbdfd637b0dd43624526b0179b41597c29093b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: generate CombObj stream \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFWorkbook.cs"},"region":{"startLine":2626}}}],"partialFingerprints":{"codehealthFindingId/v1":"d13ab41adf0f9419c5aadd12f95b5a2ee119a77f05fb980d5b50a81aace7fa02"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] XmlEnumParser"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/Util/XmlEnumParser.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"8483c1bf0ac49835f08a4c6f34405e2cdc29209b7fd7ea8a709c651684e2739b"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] XMLParagraph"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Model/XMLParagraph.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aedb06e926aee20f1faee2fdfb22b7e0f408a71fd4b626e2ed2e3d102c6f647"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n         * This is the default Watermark paragraph; the only variable is the text message\n         * TODO: manage all the other variables\n         */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Model/XWPFHeaderFooterPolicy.cs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"c11538d06c0dee89265ada2d9e2a94fbf667679e926e619f34a74f5698c3496e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO generate rsidr and rsidrdefault \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Model/XWPFHeaderFooterPolicy.cs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f12acdbfd64e3923a8a408357a8ea21df6cbd211ba93fdddcfa2f3dd11451dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //YK: TODO document each alignment option \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/ParagraphAlignment.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4aac4da9f80e007b5ecc9cc06d7d33854837f0bb9b319d1b6e3d72e0be4fc2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add support for TargetMode.EXTERNAL relations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFComments.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f8ae83a1a298436bd1403b0b94bd2a650dd7b6b485b8659ded97956c9ce5f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add support for TargetMode.EXTERNAL relations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":1709}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ddd1114169c9cbdda62f71de89fc8e1d38931a59be6aebb9ca0ea67ae3ac4e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add support for TargetMode.EXTERNAL relations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFHeaderFooter.cs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc1060678caf61aa828d25eaa8deafbee5ea71145419f93143d075d23b72434a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make me optional/Separated in private function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"a645177c9b0e35a60778b8d9193e5d41e6a2b874633b8dca8c759439904103ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO this needs to be migrated out into section code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"93fd8929427e001136262964562fa618421666c9cdea5377bf6c45d172badd20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO this needs to be migrated out into section code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09d8399422d55627b3daab1de70c806c8141973a108bb37179304a4fbe03ec9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Add support for Even/Odd headings and footers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"1927677e02878d30dacf690328606bc111367b55cc4c83c26e679362e30d4b6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Add support for Even/Odd headings and footers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"4051269c6e8c117c4a2551ea0a9e9f85fbc5c8980bcd4802fee5e7eb8610182e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //     * TODO DO not use a coded constant, find the constant in the OOXML \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"4734bb0fcc5c04ceb1c661409fa26de95a8d3667d92b64b60c9fbd67dfeeced8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /* TODO update body element, update xwpf element, verify that\n             * incoming paragraph belongs to this document or if not, XML was\n             * copied properly (namespace-abbreviations, etc.)\n             */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFDocument.cs"},"region":{"startLine":1202}}}],"partialFingerprints":{"codehealthFindingId/v1":"b24c0ac6cd297640ecec912baef55a11774e829dfac4b0e99c5339fbb4c4f52d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix this to convert line to equivalent value, or deprecate this in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":998}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb2dedb5ca402b2d97e408ab373d9f5687da7e814a96b5785cc83d5a5e5c75d9"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] IsWordWrap"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFParagraph.cs"},"region":{"startLine":1273}}}],"partialFingerprints":{"codehealthFindingId/v1":"0309103531f411d952e8c290880ddbb84ead00024b3d6c29a880e5d35e1ccaa9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Implement public radPr \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRad.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc57ef314cd890b927f9b1e4eb39707ee495fcda1dcbeecb88d0734bfdd70165"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //todo:: imlement this"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"f10d7f1c6565e920a7cf19caea465fa1632f78b216220956b53f12fd131b0a50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Should we have an interface for this sort of thing? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":1368}}}],"partialFingerprints":{"codehealthFindingId/v1":"267ddef6ee74af4aa1451ae548a589987b5854a870d608cf25636f53da321fbe"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] IsStrike"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":768}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc00b96ac0a6bb14fdd767dc3dc2774c8a3d9f3454acff10ac359cbcf0e70d69"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SetStrike"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFRun.cs"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb000d6c2441cbd114acf479b071713d02156444a927acb1ea75b8de104e16e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: it is possible to have an SDT that contains a cell in within a row \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XWPF/Usermodel/XWPFTableRow.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"223f5d235a8ea226ae54bacb032f1daca94ad9f30c21cee2aeffb6088b7a13cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Load element with XMLBeans or dynamic table \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/Unmarshallers/PackagePropertiesUnmarshaller.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc40c2ada659e8e41a1977a97329e1c7b0babfef53af0cc81abff54d70031ded"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Check every element/namespace for compliance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/Unmarshallers/PackagePropertiesUnmarshaller.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"39ac47ebac48c774f505597bf06da56b3604bd817f439ede6af52582aa95b520"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ZipSecureFile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/ZipHelper.cs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"f24f6bf2f04070e3b68e0c5a201f4c3c9bd6ed782edd2b9a9568e8027456f3dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ZipSecureFile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/ZipHelper.cs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5eddf2297e45bc4608ccf012d0f3d303c478fc53ad95f45498519360b719154"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ZipSecureFile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/ZipHelper.cs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"563d3e86510575fc356b979cc3e4ac6036e529584510f99eb59b78f0de47fea0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ZipSecureFile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"343f4f3fa27adf59feb595d67f3a3e494ce5ac87cfb2f191dd3b19a494a4cfa7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ZipSecureFile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e5b5b357759fc636661c76bef00b551dc56cfb23c68038110abbc3c1f78367"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Delocalize specialized marshallers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/OPCPackage.cs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"1846a1e86820c2999427192f42dd5afd19419a2129ddc02d1bd2c03c88e886be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - enforcing ZipPackage here - perhaps should change constructor signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/PackagePart.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad0fdf03137ea82ec392525a2eac1d37d0bd23f6643803c94120ab252dff1321"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - don\u0027t use system.err.  Is it valid to return null when this exception occurs? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/ZipPackage.cs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"48acd177b2ed2b345c0a5b9b624f8fd7a59e92e47a697dac065fc2577db8fd5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO make this stable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/Util/XmlHelper.cs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"8879ca92d4a85cecb2ae262cdd06973bba5980a3ddcf24fed5b421eb9a793e01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - no Random - tests should be completely deterministic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestMetaDataIPI.cs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac99ba3e6195b2e852dcf60f6bd20e68a8bb3d905f8be7c46d1caa7bf3ecce1b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME dsi.Docparts; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestReadAllFiles.cs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cd1dd7fe1ada3ad31c389d5fb2716f165c9669388ee563a8a3bccacdae3f1b7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME dsi.HeadingPair; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestReadAllFiles.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d64ceb179d2661c1233c8a9e3139bd552f58c9ccc92c018fa4cac27d194fcbd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /* FIXME (2): Replace the previous line by the following\n                         * one once we no longer need JDK 1.3 compatibility. */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWrite.cs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"478428005bef678e40bee005cce081ddfae60026fc7ddf9f8dc4ea63402b6bab"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): static final byte[] P_THUMBNAIL = new byte[123]; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3e2fb8517164af80000f6a051996f0267c094da280d2f155658b436b4b9a1de"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): static final byte[]  P_DOCPARTS = new byte[123]; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccfaddb946de3dc86c7da7a51c3bb1f4f49eab87fd7471ef109096283b3eb76b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): static final byte[]  P_HEADING_PAIR = new byte[123]; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c66fd8c899a6dec2450d070db73ef497366b2df5b26da02a73c033ca872a871"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): si.Thumbnail = P_THUMBNAIL; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"b50ce4f643bea24f74b8c36ed7078ad0caed97d916574a05c5e8b87b6584b18f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): dsi.Docparts = P_DOCPARTS; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"baabed52d167f1c8ef1149ff9fa90bf535e8b05e1b181c20d0d08957c1bcb51e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): dsi.HeadingPair = P_HEADING_PAIR; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbbd03dee4ce1a710ff44fd7fd6002a52db2d1b517b1391de73c7986a0f1ef61"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): ClassicAssert.AreEqual(P_THUMBNAIL, si.Thumbnail); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c87f5eb2c606f16e4f61d686b78a7fe62031b1aa4fcb81ade094b213231c084"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): ClassicAssert.AreEqual(P_, dsi.Docparts); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"fce84c76316a89c148980d907c76c49d5c4c399576eeefd15f73f6c310450371"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): ClassicAssert.AreEqual(P_, dsi.HeadingPair); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"5038c6942fdc066a1a95be5ff3489d6cdcd1bf4cabc542c6aa14036f37ffac21"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): ClassicAssert.IsNull(dsi.Docparts); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b0108f76c2ed650819859f1b9f7c197d280aa191578253373cc09495ab6071"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME (byte array properties not yet implemented): ClassicAssert.IsNull(dsi.HeadingPair); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HPSF/Basic/TestWriteWellKnown.cs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d20156d51fa42ff84661ca2e588e36505de7a4d72698e6249e306e348fefb0d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // hack to pass boolean by ref into inner class \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/EventModel/TestEventRecordFactory.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"768c5b628be6b9de3404410786fa9036006751316f7faa164311c80ffb10fa18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Test some specific format strings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/EventUserModel/TestFormatTrackingHSSFListener.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad936266637c3fc44a047679a7be999d72c9cda8fd952037a98dc158cedf5a5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Find some then test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Extractor/TestOldExcelExtractor.cs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"077fdff30cfa28b584d18209645bc86041bab88d179ea60cefbf1fb7dbc2b43e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Rounding \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Extractor/TestOldExcelExtractor.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"476ef57211fcf16ef43f5a37fd2bd1348fe88a26e94b06284f78c720505d5fce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: develop a process for occasionally manually reviewing workbooks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Model/TestFormulaParser.cs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"119b54b3d98febb3ab97f198652f57078bc2d305996fb6ef9f21a984a7de9dc0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: develop a process for occasionally manually reviewing workbooks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/SS/Formula/TestFormulaParser.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b78178376b5a17063f4cea4307a5bd6b88c3a9099629f42a416f8b724d75e49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - AttrPtg), // Excel prepends this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Model/TestFormulaParser.cs"},"region":{"startLine":1381}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e53704ac288f1cd6401ff26b2bed59d8850f1432a9ada68982cbae9ee1390fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - AttrPtg.class, // Excel prepends this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Model/TestFormulaParser.cs"},"region":{"startLine":1409}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b0b6acdc6cb29113efa0fcfbb6d08bbd2238d7142a9e7596587cea03816f40a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Model/TestSheet.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c10db9452c4fa501d6ceb1865454564059beb177054bfb5ee93865bf7d8eaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Model/TestSheet.cs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1a104e24d3796818eae61c5c4057174fe90427ea6353d065aaeac2b03e8bc0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFParagraph.cs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41b7d8ebf03f088c2d184e7a9471390f3f761d0a1a1d76beb1597d97cb402bc"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestSeriesToChartGroupRecord"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/Chart/TestSeriesToChartGroupRecord.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fc9b452e1aad6bee23a3aa756dac5f6d9b3c0db1849b53c419318a47ad96602"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - the last 2 bytes of formula data (8,0) seem weird.  They encode to ConcatPtg, UnknownPtg \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/TestExternalNameRecord.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"2de78f6198bbbe9d2acdc44f4e1cf6ff871d1e101a6b579dd3adfca19e14fe28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/TestNameCommentRecord.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a263392c916d4fe58f846d1218fc32ef7fb1c16722874d2a89c46e9639c52c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestNPOIFSFileSystem.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"6abcf1d30fdeb84690a5212d2b44356985c3023f77da4e7764dcb581c540b66a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestNPOIFSMiniStore.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"954a6d6ede6d4476059b0be72b466032ef09d0107dd082ee4ee18f9e0e9ef1b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestNPOIFSStream.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ee11b427d577d3adf9b83e1e381a633c92214041c2c989ae9034cde74061ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/NIO/TestDataSource.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"620514662d019afc723b29bdff81dca9f0ac7bd7d0603968db1e497346eb29b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/TestSpreadsheetVersion.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"43fb31a12ab41b8a83477102a4b46b8a800dbd953b863428438d74f96c8da630"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/Util/TestArrayUtil.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"0983349fb4af096be2ed82bcde73d57dc8c2eb37fe96823ae69c3ece91b2ba0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/Util/TestPOILogFactory.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f60a73ee7b1494788a408ddf4cdb56db6f47ebbcb4797814f3da51718b31f252"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add constructor logic here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/Util/TestPOILogger.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c599bbe0afee58fcd1dd012a57ac92f0df300209c11e94fe6d2483b29db9345"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - this data seems to require two extra bytes padding. not sure where original file is. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/TestObjRecord.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c863157ac4c907f967cf6673ce86360a5d166fcac88bd82163d0c66a631a09e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - trivial differences in ContinueRecord break locations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/TestSSTRecord.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c14904864eb92a787acc60fbf11ab49106ea2d72cc6bfcf5913140c7e7f137e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO sometimes last byte is non-zero \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Record/TestSubRecord.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d506bff0dcce64c767badc1da492afcf5feab50fed06429bbf336bd5aba109"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Check the formula once tables and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestBugs.cs"},"region":{"startLine":1537}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dd492dffbb7275751e605ebc98e58906c944374ef46d7441e04a9436819648d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - Check the formula once tables and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestBugs.cs"},"region":{"startLine":1547}}}],"partialFingerprints":{"codehealthFindingId/v1":"458981ba2be60b3cf3067fa9fbc8fa0c667e7cff826d32b85d7d0394ce186248"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Identify what excel doesn\u0027t like, and check for that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestBugs.cs"},"region":{"startLine":2670}}}],"partialFingerprints":{"codehealthFindingId/v1":"51fcdcc65c14b161e7e5b60b26b12ed6e4ab3ef3ff6739542064bbf6c041c6e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO How does Excel know to prefix this with the filename? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestBugs.cs"},"region":{"startLine":3097}}}],"partialFingerprints":{"codehealthFindingId/v1":"880a075087c3a89577f1432c8b02ac9f68e917556e4f1e88b79f114e88be999f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO This isn\u0027t right, but it\u0027s what we currently generate.... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestBugs.cs"},"region":{"startLine":3100}}}],"partialFingerprints":{"codehealthFindingId/v1":"945dba975825a0200f3c2417e9b4b13889e1c83ef73879ea400fe2494c677e78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - add proof spreadsheet and compare \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestDataValidation.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"3710f0e88926f34d59cfdad419b86fd29e928af550b973fe294bb7a9e203537d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO\u002B proofFile.AbsolutePath \u002B \u0022\u0027.\u0022); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestDataValidation.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"f162be14e9ad9b65a8b902b070fc397b399964145bc56763a6c3629c3c269ad0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //      assertRefPtgA1(\u0027V\u0027, getPtgs(cell), 4); // FIXME! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestFormulaEvaluatorBugs.cs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"be7a497fdab818d61d63285dcd967e6ff8e0f852be38d8445adeac428f78138e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //      assertRefPtgA1(\u0027V\u0027, getPtgs(cell), 4); // FIXME! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestFormulaEvaluatorBugs.cs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"058989fefe8ac6ceae260551579a10cd29268890b58f5ec4ce2452d9a5a2c05b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //      assertRefPtgA1(\u0027V\u0027, getPtgs(cell), 4); // FIXME! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestFormulaEvaluatorBugs.cs"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"460890c827e6d570dcda9e661560c7db68b3658c874963f60d6dbee3ab3e409a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //      assertRefPtgA1(\u0027V\u0027, getPtgs(cell), 6); // FIXME! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestFormulaEvaluatorBugs.cs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"97062f802165ce0df3a4ad3c6ac4f28c5b6a17d6cc05a624e56288edb9602de3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //      assertRefPtgA1(\u0027V\u0027, getPtgs(cell), 9); // FIXME! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestFormulaEvaluatorBugs.cs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb054252311071c104ab92782dfeec4fe5547715b8795cb3dda551bcbdfe0534"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //      assertRefPtgA1(\u0027V\u0027, getPtgs(cell), 9); // FIXME! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestFormulaEvaluatorBugs.cs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"826dee1388f060618eabb304223f4ba40de917f0f77115ed8e554df77a37a9cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:: change time zone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFDateUtil.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"d481fbf599126443f787dd2f2f22404d9ca4671eb00d9ff4a147b2a33d2e36ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:: change time zone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFDateUtil.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7cba7faa09df3de707a435dbedf01b02946e2426c5249c95deec014342f6487"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:: change time zone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFDateUtil.cs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e1a618c955cde61eb4d0c97b4e41132d61b6100b45a8de69e1a229622151b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:: change time zone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFDateUtil.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"55dbd426f4bcbaaaffd9565c352a24b8db5b9c6e69d81e30bfb1dc2cbbb05f52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:: change time zone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFDateUtil.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"f834b7d3d4ab7109642d4a624b599af8884020ac23a9c432dcb35e8cabed6abc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - full column references not rendering properly, absolute markers not present either \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFName.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89ed2fb17c8a2dace9eec4ca2148ac6f1c2e80fc37d2b72f81378947cd53f6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - use a different exception for this condition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFName.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"c669290a60505b72dda87e3c12d0e2cd0a7666ced33404ea76cb9e808fead4e9"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestDeletedReference"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFName.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ced41a91b6dbce2f972f5b6ceef216bbeb41dfdfcd70dfd8289ce061a462f7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - fix bug 44916 (1-May-2008) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFPatriarch.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7572f71852f7bc437f55facc31a92e3c078419ad49b693bba8912b5ce0bf9e3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Test code for PICT, WMF and EMF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFPictureData.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"30027ad762aab9bb96b2a033beafcc84ce01072537e304ad9418c940808ed01e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - add GetFormat() to interface PictureData and genericise wb.AllPictures \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFPictureData.cs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c49eb46266da075e5a3882a1a36ec05a4a9a517c262e6c99145330a5108117d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Check shapeId in the Cloned sheet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFSheet.cs"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"1878e279b7ea7e5cd0cf9ac1d49230ffe006c587fb0bb1f5a176efe96d455543"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /* TODO: NPE?\n            sheet.dumpDrawingRecords(false);\n            sheet.dumpDrawingRecords(true);*/ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFSheet.cs"},"region":{"startLine":1250}}}],"partialFingerprints":{"codehealthFindingId/v1":"d433ea4311324e2c12cfdde93f1354a5ce821c0a3d9dbc83444a39cc05ec3b35"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestZoom"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFSheet.cs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3ac9a66302e506226263953b9563a95a8a9bea43a93b52e1419645e2c9376e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFWorkbook.cs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"248bcbbee9dac6a45d0bbe16bf3e73034866a6892b895713ee1a6eece094dde0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFWorkbook.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"43d2cbc1eefd8e795d845769d987dc83f40db9f354f3b05fbc93fb65bc8e71e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - render full row and full column refs properly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/UserModel/TestHSSFWorkbook.cs"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"4353a72017d72253b22ef484ac03fd7244d7d6cc08aeb66c72d6854578c8779a"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestAreaReference"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/HSSF/Util/TestAreaReference.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0af13400600c7d0fcb4374c19a178f5ebb378ff0ad668125e4f1aa11fb8657"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Check we Get a helpful error about the max size \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestNPOIFSFileSystem.cs"},"region":{"startLine":1701}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b1895362a4e25e24fca212a49806eab63d1dcebdd89fe75cf0a6601522d255"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack the FAT so that it goes 0-\u003E1-\u003E2-\u003E0 \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestNPOIFSStream.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ca291e688304041c971c53e914ed996a8861bfad35f5a2cc525b2fcf2acd43"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack the FAT so that it goes 0-\u003E1-\u003E2-\u003E0 \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/FileSystem/TestNPOIFSStream.cs"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"009ea97b80fd4212233564fe2362c3db9262cc8ba6f59eae45ab35e11c6f57aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO How best to warn of a short read? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/NIO/TestDataSource.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"590eed8d058fd27b0e7660ebabb1ac624cc5e8afb5497f92f70327ab34668eb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add test logic\there \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/POIFS/Storage/TestHeaderBlockWriting.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"97bbeb9fb61102efc81383f6b63392575c752202100e81ff03ddff2519096b30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix the exception this incorrectly triggers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Format/TestCellFormat.cs"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"359944f08d73c6bbfc5d454ef8811963150922edfe523a59461355f4a878c066"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix these to not have an incorrect bonus 0 on the end \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Format/TestCellFormat.cs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dff224e4fbbb1336801aadf103c50673e1c931a2cfcfa7eb3ab3abd1ad7b139"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Auto-generated method stub \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Atp/TestRandBetween.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"98314cf69e91e744cda4de2156fe4306ee18e5a62c822e66d5ce200b45891055"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - this Test probably isn\u0027t Testing much anymore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Eval/TestAreaEval.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f8f986305bffa5d777692247689be4e8d2223c05445e699096508544557d80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - POI crashes if the formula is Added before this sheet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Eval/TestFormulaBugs.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c671bb5a3c381b8cbd216af7e1c7468b678cec0ab9d2d22fa7e112a55a82972"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This could be Moved into LookupFunctionsTestCaseData.xls, which is tested by TestLookupFunctionsFromSpreadsheet.java \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Eval/TestFormulaBugs.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"c30b04640149321067ccf06d9bd6d47aee2340f016ad301b504313162344d0d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO enable 3rd arg - \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestDays360.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9dab66a4bfb1423297b8de26c3104e3f87d35d8296a17e69e192439e920e19e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: documentation and behavior do not match here! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestDec2Bin.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5a58e14d1ef979a7b2ecbb05629f0c3429a92cc3d602c4881f79cd5b5f2a4b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: documentation and behavior do not match here! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestDec2Bin.cs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"5298f4b6ec8cd1f6f328955ac50cd84a6bd99928e5152504c99afeabc27beac6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - support Evaluation of defined names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestIndirect.cs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"114b7f60d11f3e5b1d2968987bda7a15de7244356f14e4e9577b9b6711e4c92d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO YK: Formulas in rows 16 and 17 operate with ArrayPtg which isn\u0027t yet supported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestIrr.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"662e6f1d33e8a4ef5511041e3b90abb1c40c204fc2de762352c36ff3f39f4938"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO YK: Formulas in rows 16 and 17 operate with ArrayPtg which isn\u0027t yet supported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/Functions/TestNpv.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a0625e6dbb85f060e444674122629aa1e41f2e09b2fda1a64bd5f9b5086e6dd"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // hack to tell the difference between formula and plain value \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Formula/TestEvaluationCache.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f8a4759203b5f734beb720052ad6f77cf121049091dd305b07aabd7a6018c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO This should be 1, but we don\u0027t support CFEX formattings yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5066a9376760be4470651ea81b8aed72f7bde283aa8d6db4a9f868b52abbc40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Properly detect Ext ones from the xml \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"d68100899550663b931ccbc0a8155288d86cfdf680ba43c56c5ade37c98d7601"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Should the colours be slightly different between formats? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"72fa0d4057d669129ddaf782eceaa6031939880f4007cfe38961d29d382add18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Should the colours be slightly different between formats? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"786b29848f244d299a6673a4e8bf395a8878a7e493e5fe4ec166f3519a048c5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Simplify asserts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"14dc0ee17a5607657b5b1f27b1daa4eda9733279d00f5b50f5b07060666e0f80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Support EXT formattings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"27acc91a5e2e60e86dc52617c8269d9b1de14f2854d781d6c4775592c553a935"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Support EXT formattings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bcd3caf5b8f5996929c235c1eb1bdbc1b370d2937145084f006cb44cb4a4cd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Support IconSet \u002B Other CFs with 2 rules \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c1993647ccf023b30454bbd116ce5da6dc47c7baf5e72ed1b6200b70449e350"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        // TODO Why aren\u0027t these two the same between formats? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"8067b31a68761a352d2624812488fb19bb94e27afb4d64eda241efe2e303b123"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestConditionalFormatting.cs"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"9622da145bfeac009335b1b254fd328f6b6b29c6dd4af662a65fb7d443619517"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix this to not have an extra 0 at the end \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestDataFormat.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd2fad497bd335d02efd9db74773126b02414b7d8eb40fb2883c02a49718a8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO           ClassicAssert.AreEqual(\u0022Minimum row number is 0.\u0022, e.Message); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheet.cs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a38e275725ebb974626783f14da7ca12c65af7dd27167ffb2b8d162f3fa9a0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO defaults are different in HSSF and XSSF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheet.cs"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0fcc1d5f68e53518f913e59698d95dfcd96d6dc534931f8a0907cf75a431aa3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: default \u0022guts\u0022 is different in HSSF and XSSF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheet.cs"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d61097ce4c21e77eddf04a886a0f86d274a37e356a347fe3e09d35b84e8178"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: default \u0022autobreaks\u0022 is different in HSSF and XSSF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheet.cs"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"14e3ab94fd69ab65cd42673724024ea78939c704e5595a1d8b0c82030adb22aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: default \u0022fit-to-page\u0022 is different in HSSF and XSSF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheet.cs"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"56bb92d4ffbbfaccf1490a73c6a39ceed813e52129d4b754759fe1322f73a118"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO should we have this stuff in the FormulaEvaluator? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetAutosizeColumn.cs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"c81411e6edf537ce49beb325092abe6db36f48a495169e376ee7d1287ce314c9"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestSheetHiddenOld"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetHiding.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"89594f67d99e9d0b3a99c2e3639746ee609088743868d77c30a75e79cce1d52f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - enable XSSF Test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetShiftRows.cs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6584f94efd09b7ac4bffb48260192336fd79365969bb018fa22bbede5649b69"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: it seems HSSFSheet does not correctly remove comments from rows that are overwritten \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetShiftRows.cs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"708ac071e7a685f005cf9b587153f04a250e4b10943173be7c92d0adfe4dbb9e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: remove try, catch, and testPassesNow, skipTest when test passes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetShiftRows.cs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20cd71b246113fd6a7e47284d0e1bb19fb8fa353df53f5c02da98746bab263e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: remove try, catch, and testPassesNow, skipTest when test passes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetShiftRows.cs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada29cc1da90561c59946aa3a2e2dc5dcc89dc444147aa855fbd0c9a057b9738"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n             TODO: enable Shifting the whole array\n\n            sheet.ShiftRows(0, 2, 1);\n            //the array C1:C3 is now C2:C4\n            CellRangeAddress cra = CellRangeAddress.ValueOf(\u0022C2:C4\u0022);\n            foreach(Cell mcell in mrange){\n                //TODO define Equals and hashcode for CellRangeAddress\n                ClassicAssert.AreEqual(cra.FormatAsString(), mcell.ArrayFormulaRange.formatAsString());\n                ClassicAssert.AreEqual(\u0022A2:A4*B2:B4\u0022, mcell.CellFormula);\n                ClassicAssert.IsTrue(mcell.IsPartOfArrayFormulaGroup);\n                ClassicAssert.AreEqual(CellType.Formula, mcell.CellType);\n            }\n\n            */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestSheetUpdateArrayFormulas.cs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"6672f3678f88dfe56a563e2e20ca0b06bc2ed587c7663a504e35c0eab6162fa5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - c2 unused but changing next line (\u0027c\u0027-\u003E\u0027c2\u0027) causes Test to fail \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/BaseTestWorkbook.cs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f24d82a32a2f2505af59ae7c2b51fdfe84d67c59a4754237f028c872d3d8b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - fix case of negative subpattern differing from the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/TestDataFormatter.cs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a605053d07d75e1ef0a97ed6b8e3576e5d88943f02c4f44ffb83934489e5ad0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix this, we are randomly adding a 0 at the end that souldn\u0027t be there"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/TestDataFormatter.cs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac8ec790f46a52fcee6a204bb7653795d053aead2107e8f05f05d85c0e9f3c9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix this, we are randomly adding a 0 at the end that souldn\u0027t be there"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/TestDataFormatter.cs"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a878d9fa6a3e75d48a8d4f6d2dc8b7951be3655799fd6dba5556f1718a8e307"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO Fix these so that they work \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/UserModel/TestDataFormatter.cs"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcab42393d4900bcc220a599aa7e49843e230a57f1b09917d73dccdd803cbf50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - bug elsewhere in POI - something wrong with encoding of NOT() function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Util/NumberComparingSpreadsheetGenerator.cs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e07d7ba38cc62ed967400c4469dbe939673b5731ccb76d9e1ff9faa6a6404d1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: CellReference is inconsistent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/SS/Util/TestCellReference.cs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8294dcbd184c73abbb95b9aea1796a833d76056ab21dd5183a0240e4a668e86"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: test failing case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/TestPOITestCase.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"acbad1273589fc399841646498d895485062be7dfcdb2a758a75159492c1552f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: test failing case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/TestPOITestCase.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed7a7c7a25d2fcc074db02b06f5631f7e416d88fa931c182ebe895786f6b82a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: test failing case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/TestPOITestCase.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5726d8560f048c62e33e96f441d34bc68b673a6a3c18a3977976065df612f95"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: test failing case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/TestPOITestCase.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"232fd23023794e0dbf55dcc72eb64edc2fb2d39355ba3376c3d19d6bd7b41e9f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestULongField"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/main/Util/TestULongField.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f58eb04292aa73730aa7ea4b2722ee4d3b85f4a7f9a1ecf35fd901849cb9b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //// todo: test a manipulation on a package part, which is not signed"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/POIFS/Crypt/TestSignatureInfo.cs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea662c6006043913c06529333fecc4bada2d46b0e79eb858c9c47bfe658b1580"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: close() re-writes the sample-file?! Resort to revert() for now to close file handle... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/SS/TestWorkbookFactory.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6f426fbaab1ceaabf77461044b614376551bc98a7d375a379511c430e7578fc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: A better exception class (IOException?) and message should be raised \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/TestPOIXMLDocument.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f25fb7a30796571fed1487ed76b0fd8b0676f1baa4621dfd568cc83f31317ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO finish me \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/TestPOIXMLDocument.cs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ee295fa9de41aa0a3e363f27644d17acd5f924f24d11577727e88e7b525459f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: add in tests for phonetic runs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Binary/TestXSSFBSharedStringsTable.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"97dfcab0789d11f9ec09f82900a0ce582128398d2f14548025ebeaecb3b5d56c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO filename string hard coded in XSSFWorkbook constructor in order to make ant Test-ooxml target be successful. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/IO/TestLoadSaveXSSF.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3350ec13588948ca0b06add737a87ab2f6339d75df2804b12c827c85618d2b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO filename string hard coded in XSSFWorkbook constructor in order to make ant Test-ooxml target be successful. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/IO/TestLoadSaveXSSF.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c832003dc9ff0f0b4b46c74750b085c302d6532b936fde24f97a1e082c5a37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Rich text formatting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Model/TestCommentsTable.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e70af2f789f7b92b3841c55076546414edc157781f2d29eeccd9bd4e26d5eba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Todo - check text too, once bug fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Model/TestCommentsTable.cs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"547ba5dff088368d1f17b1daeaadc04d91d1a86bd45ef196ffdfa18c3d98e30d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO .xls version available too, add HSSF support then check \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Model/TestThemesTable.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e059dd75122c422b3f4d410f2bcd3ae422287f40cfc25d2e5eedc29403d5679"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix the grey theme color in Column B \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Model/TestThemesTable.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5281fcd4aafaa8cf9112eaa85274644092895f38494815cc3aead57e975649b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Add Tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/AutoSizeColumnTrackerTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"37cc7db2c47d176a3a5ff4aacee5f595020d4547d86a62ae91a5c55d3a08ad62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Add tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/SXSSFCreationHelperTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca55ed4d84aa122a6d4df0f24861599d5f0d0afdfdcb215bd64904d1b85cdaf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Add tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/SXSSFSheetTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"10be03265c3bba34e4f83d3c458c4534f384d55023469c67b7a1426efb34263e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:Add tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/SXSSFEvaluationCellTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"95cdb701eceddad57450afc2c789235044e86828287eed0f1c18f9541b16303f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:Add tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/SXSSFFormulaEvaluatorTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e0f1aafae5b0480f9ea19ea45dbcda1b679a2b8103649ab235a6fff5f4c84d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:Add tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/SXSSFEvaluationWorkbookTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"0278feb3a7b67ca08ab280284d05a93f1f599f9cb9e9027715da3faf46ef993e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Add Tests for creating cells. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/SXSSFRowTests.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eda28ca0864ccb755cf8e40aecb03003a756faf1a00ee0f9d38893b218f57a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO add test for cell out of bounds. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/SXSSFRowTests.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d46862c96d0079f3922e1207b6f6e7ecbb19ce15d3a95baef808ca44a77234e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Reading cell comments via Sheet does not work currently as it tries \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Streaming/TestSXSSFSheet.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c398b44e9f5319bbf59eecf02fb4e0c1eb4720dd841e23f322edc23357a1810"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - assert something interesting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/Helpers/TestColumnHelper.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd93de9c445b2fb2f40101929a3940a041549c98f404c3d9e0f632a196227c9c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestColumnHelper"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/Helpers/TestColumnHelper.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ba4fc52923bf0685faf0a95dad08f06f892a2cfb0af06c16039b1d91e788e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //{ // TODO: fix ~45 functions which are currently returning incorrect error values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"896497b5882a777eca977362fdb88047d07793f48ca85b062e80bcfd93d160ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n         * TODO - these are all formulas which currently (Apr-2008) break on ooxml \n         */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"698202eb713132db65c3851700af94af2144c1962bdb276ed2a0f9a1e571a154"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix ~45 functions which are currently returning incorrect error values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestMultiSheetFormulaEvaluatorOnXSSF.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"6797192df1ada16ae5d888ac3f5de2731b0b85334937c920da9d6645a4c15a54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":1373}}}],"partialFingerprints":{"codehealthFindingId/v1":"3399c769c9e693f150a07c421b2a287d2364589f655b6d722556741014bff5c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":1378}}}],"partialFingerprints":{"codehealthFindingId/v1":"b116427023b8eabaf64ef09bbee6d3e7b517f9542080984eaf844f729c805892"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Check sheet contents \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":2604}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad676365c67c6cc164ea3edac1b307ef7071a8af793629486e3b94365a00155"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Check formula Evaluation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":2605}}}],"partialFingerprints":{"codehealthFindingId/v1":"b05183bfea5c6fb9a7322939015b96c449b9803aa9c55f3e77c10ece6681ac0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Re-check sheet contents \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":2609}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf76aed6f27665b10c7a9a70117e98b9eb63d336b371e4e745fab05dbe6653b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Re-check formula Evaluation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":2610}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f0676183fa1d4d7eb47bd0407cd88a4b5465eb18d44e7313af25de6d2752d2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: how many tables are there in this spreadsheet? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":3330}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de274610e6a3e348ee0a56e0105f3ac3bcf36646885cb043c15617ce63e8e09"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: what is the table name? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":3331}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6ec15fdf135733a8aed11873e984d41c3c9b491f21e9e14de3644765fd84e04"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: what is the table name? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFBugs.cs"},"region":{"startLine":3332}}}],"partialFingerprints":{"codehealthFindingId/v1":"1437eb4d892d39f927867b08d14b8f86c2c8bd8580fc7f5b46918a5f41ad08d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO this testcase assumes that cellStyle creates a new CT_Fill, but the implementation changes the existing style. - do not know whats right 8-( \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFCellStyle.cs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bb319474567cd5a4ef85b7b7378517742a499a0639424412b451048c24e4ad0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO These values are suspected to be wrong... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFColor.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d538c0a4e060be7da43fe29c6ba653511a27fc2093916c0d1dbb2653c3af65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //  Assert.Fail(\u0022TODO test case incomplete!?\u0022); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFComment.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"765a74847d40bdc74e62103a350327f275d42e1ce3a1fb52adc9bf73aa6ba7c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Bring the XSSF support up to the same level \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFConditionalFormatting.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"79261d95854ca0d822447ba167dee6a41f461c23f2c5f036adaadaec62e232fa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: whitespace wasn\u0027t stripped \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFDataValidationConstraint.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"08aec3d8549ca99959287a020a0836b71b0787716a083bf78d8de9c1180c6792"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Fix and enable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFFormulaEvaluation.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d208383329c22a4b5edf4d40c1b44e623b0c43c57efb7d00d4b18c0f8540b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Shouldn\u0027t it become [2] like the others? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFFormulaEvaluation.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b516c73ff206b842c5679a5a2bf099889cf1faad417c65351f750799577fc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Implement the rest of this, see bug #57184"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFFormulaEvaluation.cs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"622ff8e7cfe0e080ce9eb15d304ca0b6af7c15095d99bbbda647536109b70a38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n                            wb.linkExternalWorkbook(\u0022alt.xlsx\u0022, alt);\n\n                            cXSLX_nw_cell.setCellFormula(\u0022[alt.xlsx]Sheet1!$A$1\u0022);\n                            // Check it - TODO Is this correct? Or should it become [3]Sheet1!$A$1 ?\n                            ClassicAssert.AreEqual(\u0022[alt.xlsx]Sheet1!$A$1\u0022, cXSLX_nw_cell.getCellFormula());\n\n                            // Evaluate it, without a link to that workbook\n                            try {\n                                evaluator.evaluate(cXSLX_nw_cell);\n                                fail(\u0022No cached value and no link to workbook, shouldn\u0027t evaluate\u0022);\n                            } catch(Exception e) {}\n\n                            // Add a link, check it does\n                            evaluators.put(\u0022alt.xlsx\u0022, alt.getCreationHelper().createFormulaEvaluator());\n                            evaluator.setupReferencedWorkbooks(evaluators);\n\n                            evaluator.evaluate(cXSLX_nw_cell);\n                            ClassicAssert.AreEqual(\u0022In another workbook\u0022, cXSLX_nw_cell.getStringCellValue());\n                */"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFFormulaEvaluation.cs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"df8ad11374b5132ad1aff818066916aec9bd741e1bb9d2f2388ce379bef14f0d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use junit4 parameterization \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFFormulaEvaluation.cs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"62444927c59fe561b6d7bcddbd3b46144664f0f31419eea08f86e98ca0c3dfd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO combine TestRepeatingRowsAndColums() for HSSF and XSSF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFName.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"c43b307bca30d9bc908e7858f46972829a6c9ccdbdeb2f4eff109f78d15d863e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO finish usermodel API for XSSFPicture \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFPictureData.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4dbf37d4dced01a879538fbeeefa5570596c341c71f998bb6facd118f4ec033"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: normally ToString() should never return null, should we adjust this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"d14c9e9f78f55261305b9d9fc5ceebac62a61fe44562421c0ec645df8311a9f7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestRgbColor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFRichTextString.cs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ff524d6ee2f03735b43040b1bb72aad7e635b069c6d2923be8b3cd26435b40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Cell Range H7:I8 was replaced by H4:I4,not merged, this assert shoud be false \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ba1d128d71083737e73791c01ca20c383a92f765665ef5ca13ba5a14052242b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: XSSFCell and HSSFCell expose different interfaces. getErrorCellString would be helpful here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs"},"region":{"startLine":2607}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d1513e05d27d10c91b7c222f7a08d083da907d5882ca1418477befe79ac3f1a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: XSSFCell and HSSFCell expose different interfaces. getErrorCellString would be helpful here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs"},"region":{"startLine":2761}}}],"partialFingerprints":{"codehealthFindingId/v1":"478b39c89ba27b6416b3568c63b42a33cc9481e882b90dc4e96942bdea310413"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: XSSFCell and HSSFCell expose different interfaces. getErrorCellString would be helpful here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs"},"region":{"startLine":2766}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a17134fff6f702be41e7478a80ec576206599bf78832464d1cf89eeec64d98e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Array Formula set with Sheet.setArrayFormula() instead of cell.setFormula() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs"},"region":{"startLine":2665}}}],"partialFingerprints":{"codehealthFindingId/v1":"2649d3aa0401fa1c7a25083564614ef50a5e7e0ec0945e21f0736dc54ab05b50"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: currently Assert.Fails \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs"},"region":{"startLine":2675}}}],"partialFingerprints":{"codehealthFindingId/v1":"50bb913e4777b92384d1a6a2c1d6cebbb64460fdbd538c81a15a0cd574c2ec06"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /*\n                // FIXME: Array Formula set with Sheet.setArrayFormula() instead of cell.setFormula()\n                ClassicAssert.AreEqual(\u0022[Array Formula] N10 cell type\u0022, CellType.Formula, cell.CellType);\n                ClassicAssert.AreEqual(\u0022[Array Formula] N10 cell formula\u0022, \u0022{SUM(H10:J10*{1,2,3})}\u0022, cell.CellFormula);\n\n                cell = CellUtil.GetCell(destRow2, col);\n                // FIXME: Array Formula set with Sheet.setArrayFormula() instead of cell.setFormula() \n                ClassicAssert.AreEqual(\u0022[Array Formula] N11 cell type\u0022, CellType.Formula, cell.CellType);\n                ClassicAssert.AreEqual(\u0022[Array Formula] N11 cell formula\u0022, \u0022{SUM(H11:J11*{1,2,3})}\u0022, cell.CellFormula);\n             */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs"},"region":{"startLine":2874}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf282a3d2e5f6bd10d0943f8e285054266e718c9996e8f46cd12a7f27f201d8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - support shifting of page breaks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSheetShiftRows.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f028e44250eecb95e288d72e5d6366c716955eb2af1d633e894ee4d5fed7c4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should this be supported? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFSimpleShape.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa4223a517945f19fecfedcae8eaba2b51060791ef4617d3ab978fe51805471"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use a worksheet where upper left cell of table is not A1 so that we test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFTable.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"e698ece7fc69b1409fc502d7cb9d251bc39fe1720e98f0cb48e56365b4a021ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Nicer column fetching \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFTable.cs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b602e860ce3830637aed2d558c7211e0796b34c6c09ab60a1c52204fb15fbd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Nicer column fetching \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFTable.cs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d65f91dbf3b7e801a7c765b7d8017ea91c1fd92b605f0f449e318aa007aa168"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] GetNumberOfMappedColumns"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/UserModel/TestXSSFTable.cs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36b7d2de1be204ca27b18a8cb2435950bfaf182ea3ae9d3f65b5c250a782a18"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TestEvilUnclosedBRFixingInputStream"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XSSF/Util/TestEvilUnclosedBRFixingInputStream.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"312cc076ff8766b6b835a63bc50311867145dff34e50dad72ee9da0d1c68961f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /*\n            // TODO - finish this test\n            if (false) {\n                CTStyles styles = doc.Style;\n                CTStyle style = styles.AddNewStyle();\n                style.Type=(STStyleType.PARAGRAPH);\n                style.StyleId=(\u0022Heading1\u0022);\n            }\n\n            if (false) {\n                File file = TempFile.CreateTempFile(\u0022testHeaders\u0022, \u0022.docx\u0022);\n                OutputStream out1 = new FileOutputStream(file);\n                doc.Write(out1);\n                out1.Close();\n            }\n            */ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFHeadings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"25a43af97abc3a354e8dd8940a4776194b551ec135fd39d0dd2b1b8b9fd018d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Why isn\u0027t this seen as 10? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFParagraph.cs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e76d30d8a12c5252096bab52785c5c60cc151139599b584a00d4d337916d0b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Shouldn\u0027t we use XWPFNumbering or similar here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFParagraph.cs"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"1490e149ed0ea878a8571ed7ff747e46a1c5987d4a3c4d85ec8ae5fa4deb3158"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Make it easier to change \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/ooxml/XWPF/UserModel/TestXWPFParagraph.cs"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"05ea7f4ffb64e35f00e376241d048fc65394d7229be07b4ed39055281b97b406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - finish writing this test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/openxml4net/OPC/Internal/TestContentTypeManager.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee30eb0edbce1580b076ff4b75d850b44763883d07e9066cde844f5daf078724"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS8002 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/NPOI.Core.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"64138ab778dc1cc72777b1a9a978e3bcdfe9d3e2dad2dbe0cd88d4bd58a878e6"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: SYSLIB0014 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/NPOI.Benchmarks/NPOI.Benchmarks.csproj"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"facfa487725f14002fb2e1bdb46e1c2cafa483b1542d965d664218a2464e95e4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: SYSLIB0014 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/Directory.Build.props"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fb245fc3cc246de5f55d10af22291a3f7dc531dc1d94ea38e8e2d7731afdf3"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0419 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0c6cf013ebcd83fa872593934c268e28398f82f69bdf0bf4e308fd53ad94985"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1570 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a1b6075b2a4bff2382b0f8f2164a8c945afde63c08bc1f810fbbd2bb6c2ddd"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1572 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bdcfb64f43ce4c1adfef4c728f598cb0c951e66a22ce07c535b2208b66f46a4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1573 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5d1041a8d49a92ae408aa68b99b0e193bd2785814aca9aed1e00b20bf0dbe3"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1574 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df1dd34345918fb03e28b33c2048c0207dadf9679b1d1d7cf6ff21165f40cba"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1584 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9fc279e8c3570a4a6ed13853c39562b3e427275fa023d47decabfec9bdd065"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1587 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3bd1445e0e87f33d990834c63d23a95d3c6d115e15a786d3d5f581b5a834d80"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1591 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"e624637bec03c7cfbcc746ae7714523e01976f0e6029ca02ec7c725dd97bd47e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1734 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"92929f36067ac9f99cf0c55c52c5ebc47cc052f3425508eba4925791e671d73a"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0108 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0200c68e81905ad314dcb2e38966d005e966f0961654333adf627b37de8e58f"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0114 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8adf3c96b2f6c57e60e87fe2ae2e77cf715f231fd5ea8005848a2cd75fea768"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0162 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e707cf36825f8f56f188a25387987db689e0011d70cf1d3976f1663e9042ca"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0162 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/Directory.Build.props"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1fb8155ccfb6d9da85feb4ca01eb0a92a87208af5d75ebeb021869c67991f0"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0168 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a7c8450bdd78875343ad2f77613f8305582531bdae2e42511df67fc659d186e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0169 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d80d57cc69f850715634746796b8417b2c7b01b80f712d9f885bef5676571a21"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0414 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"186f79de38edee48c94cdb0927dc4e0f47a5b0e822c4329fc05d06e203c3ddda"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0628 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"32cc6ffef7c9f213c4e6e7a5694c17964c27f28d6797002b669c5b8f7e1f16f5"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0649 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d444d891bdd548bdb0764450da160971cd7ef3ad8ad169db6cd1db589f12d0df"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0659 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"a185da37a4a02e4594c295218c2427ff16f57b656a987a1da373e123b8f56a22"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: NU1900 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0472f599130e5a076288858c9dd190791bd476a16ac8831fcdcf95db9b9fd34"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0612 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c869e6be4a042816ddd83685b6c18081c7b8fce89b5e91a27f7a8c23f5a1b12"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0612 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/Directory.Build.props"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f9e0a3e33ee8ac960dc4da57b523a31cc0807ef8d17cb117f3e743f5ba75663"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0618 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"8070b68799b870f7f6d4e46d8ac6eb9dea53947b75acdaa0cee52e003b76dca4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0618 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/Directory.Build.props"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8c32f09115c3d00b77e97068124334f76c3649fe9eedbbd3d129a85dbc626d6"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1000 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd41b8104da1f38ac743cea248c07f0dc802a16b69c5a0eb9c6edd987c3b9d8"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1001 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a0e85ad756e7d0f6ce8373e44434e006cc9b0de13bce0f36bcef9388d79083"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1010 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"c897a23d627588d266ef6480261ed15f578971586fe045107e6302c209f8e891"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1018 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"209eaca39a34c7c8fc22def6d0a8528840667ed459ba3a145ad941a5b329b231"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1036 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b97e8cbe72c97ec67182538674a22b82f66eaa769a442da1521c1e5da3b130"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1041 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d9605198d91207eb26ef9263c4733ff9fe0c2d8ea5302462dbca863caa8a5d5"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1051 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"d891202f3931a280ed04004a261f5528625ba59d8e35d39280640984ce6ef9ab"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1061 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd441404ba344570e2090be09d65d751da663fb68e205b01f7303d7b2504ae3"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1304 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff08f32ce835b267a92b7025c4d1dee16d20d68061ce403bdc8c1bf1d85fbb78"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1305 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"96efa480dea879e8f69edf960b7c8107d08035c86dcd5921e2a74c4d539fc922"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1309 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa8f7c4b6e1f17b283e35d53127f4004ab8eff3885f92171d9f7657644ea598"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1310 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d1549e5ca0f3110321ab1065ac39bdf16a8ab7d0c4d14b261a15e40d7db5db3"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1311 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"cddd8159c802b407da28ea364cffcae9ad067bbdb16ed6954fd783dbe7038e45"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1507 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"f983984b32e416d6c1f16367b81b6d416f3c19e5c2fa0b1a600b9e04bdc5e01b"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1510 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e257ad485335d0ffc2f122a39967147f9f87d564716dc61e6b8d559d4525ce6"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1512 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe51db0688bd2bb8a6e271e4cfd1ff0779166f6da80ec3f5b3992bf2c9e8b51"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1514 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ee86e865508876fa39c1b8428bd9b10571c8c3a5e0774a58cdba249cbe3771"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1707 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d57198c7bb6430657a045b060f4c35a080ec5e3b071dc29dc392a71c3a1b56e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1708 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"16499da3ae72fed4ae1826affb306085ba54270bc9f31b3ef2b77b1e43dcab81"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1710 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca6fea2fd191f8bf34b73acb954675f6fe1d0285fecbc82b1595d34bc767fea"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1711 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b02de2debc8ce604d1f68b34cb18f38812aec42062bc3a7e52c09d6de31701d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1716 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"e86efe3911b69db910a948fd3e2ad481495329c0a33b4ba00e3c0e96a078471e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1720 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ca8530c50a721c43cd83c2741cec870c6021ac45c969541159f5d19517403f"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1725 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bbbfe5c52cf0e920c9269a7d1411fb6ff273b1b8999e65d34089a77dd804627"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1805 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"9602e9ee2b7eb942932f521565d53448fecfdeded336bddf84cb72b5d57694b1"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1806 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f9bd0c29b49286f72c668543345251b9e182729eabd83cae243c202cf8f75ff"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1816 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"31e12e1e364ec423f9753e66b436154ecdf97f876ab633cc09ed41f40f93e1b2"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1830 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"53ec2f5a51509da2d6d84d4cf3b186334523b9a200245d1d8892e1b1a5a41980"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1846 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f41cfbf26987d4a54e60a1a27e28538d9733bf8e621f3a8326ca8aa4b57da7"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1834 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc1a4a1a95c66194a3315e6ca255314bf785d4589b756685310dc54c09b4be0"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1845 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"51292b775b602f41e36b82212f1c672e5a7b4bf7f2731e13a90661c757c65418"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1850 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"881fc220db4127ae60abb3c39ab6f4afe436bdc00e1b62f241538e78806e315f"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1862 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"af90adba22fb7f9ec86ebab6ba70e1dd320b585b4cd72a7637dfcb809164b573"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1872 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6bbb9e8e6bb1f54578f1f1c1ebc91260ee6ab46bb4545d9bb7101b8242f8ebf"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2019 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42fbdff16419903f89092754968e5bc236c6d69f684358fa275a3517cd5a252"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2022 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f9a7a48208c4cffabf276575e2c2f021f6a9498abd341e5a772d16ba9233528"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2201 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d4308b5578871781b78c9f7e2bba37d3f0f6d30b1a6fcfacf588efb727eb8a"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2208 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce09eedf00d91d34694ef5d748e7cefd63f4977524bb341155002bc594b983f1"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2211 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"18141969660ef5ebce735fbd48c384edd0f350cf91432f76c510e15f2e239284"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2219 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcbde07b8a9b2eeb15b1f68002a3784ee185a79327d01fcaa1e67c2ead54e557"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2241 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"446fa6a51eb23bcac4252fdc2d9a89ab505fa370bc5efe90ea22919af3ccbe3a"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2263 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a9cdc4768628e7364345152533d55e0544f56ddfcb78c90710773e0ff41e84"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA3075 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"c50d14a0df8eb49c7fe33e26a993b2fc309214e2abbf2cc2d12a9b47f93037e1"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA5351 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c36987d5da86615558d745e010b7ebd20f39c337e8aa3555b289f0798132865"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA5369 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"2655c9dd5383125e12b987242aee8bdc57a872a291688a1bd64b080ee094d552"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: SYSLIB0021 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8985c6b705ac69c34e04c0f2abf5b923a76b372e5a68d5532e7d4b32d683d0d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: SYSLIB0051 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f458b30250f75a470955eb3ae56ffbf6cd11f740d56307f0bc1eda1c775819e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA2200 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"testcases/Directory.Build.props"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d5fa1c48d6dc01ed91e278cce74514da127d039d6d70394393949ac60a7281b"}},{"ruleId":"D18","level":"warning","message":{"text":"Monorepo: only 1 of 6 solutions was scored: This repository contains 6 .NET solutions, but a scan analyzes ONE. Every score, lens, and finding here reflects only \u0060solution/NPOI.Core.sln\u0060 \u2014 the other 5 (\u0060benchmarks/NPOI.Benchmarks/NPOI.Benchmarks.sln\u0060, \u0060scratchpad/NPOI.ScratchPad.sln\u0060, \u0060tools/DocPartViewer/DocPartViewer.sln\u0060, \u0060tools/NPOI.StyleViewer/NPOI.StyleViewer.sln\u0060, \u0060tools/XmlSerializationCodeGenerator/XmlSerializationCodeGenerator.sln\u0060) were not analyzed and are not represented in the headline. To cover them, scan each solution as its own target and group them in a Solution or Product for a portfolio roll-up. If a secondary solution is an archived or vendored tree, declare it \u2014 \u0060.gitattributes\u0060 (\u0060path/** linguist-vendored\u0060) or \u0060.editorconfig\u0060 (\u0060[path/**] generated_code = true\u0060) \u2014 to exclude it from discovery the same way generated code is."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e9820d63ad953a490cc55d49a4e9b151f9620059ccf07407771ad51beb70154c"}},{"ruleId":"D19","level":"note","message":{"text":"The README links only to YouTube tutorials (\u0027How NPOI library succeeds\u0027) and an untrusted GitHub wiki, with no real documentation.: Replace the external links with a concise API reference or link to the official Apache POI docs for completeness."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed35ca02a983272ca1a8a88702a8b55c2b3242c853c6e8d9136cbb6cf7f9c6f3"}},{"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":"D23","level":"note","message":{"text":"Bounded contexts not declared: At 485k LoC spread over 33 projects the codebase is both large and multi-module, so explicit bounded contexts are warranted. Name this codebase\u0027s bounded contexts (\u22652 module groups, e.g. per subsystem) so cross-boundary type coupling can be assessed. Declare them in \u0060.codehealth/config.yaml\u0060 at the repository root (create it if absent), mapping each context name to the module-path or namespace prefixes that belong to it \u2014 e.g. \u0060architecture:\u0060 \u2192 \u0060contexts:\u0060 \u2192 \u0060Billing: [\u0022src/billing\u0022, \u0022Acme.Billing\u0022]\u0060, \u0060Catalog: [\u0022src/catalog\u0022, \u0022Acme.Catalog\u0022]\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1c7e276c9c682731f01819ed5378b90ca320cde1b583c90920172911598362b3"}},{"ruleId":"D26","level":"note","message":{"text":"Split NPOI.Core: A generic NPOI assembly that is huge and sprawls over 64 namespaces is a grab-bag. Suggested: by namespace: POI.IO, POI.Cells, POI.Spreadsheets"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"21bb5061095ff1dea5c8f402a9080740498f454e82f6c936947c78bb39a13ce3"}},{"ruleId":"D26","level":"note","message":{"text":"Split NPOI.OOXML.Core: OOXML-specific but the project itself is large and spans 30 namespaces, a sign of sprawl. Suggested: by namespace: OOXML.Document, OOXML.Tables, OOXML.Spreadsheets"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2129299ba4cbb86a7b3925d5594041ce10fa6ef7c0bb92709d3b24b9c3486ca3"}},{"ruleId":"D26","level":"note","message":{"text":"Split NPOI.OpenXmlFormats.Core: Open XML formats are tightly related but the assembly is large and spreads across 19 namespaces. Suggested: by namespace: OpenXmlElement, OpenXmlPart, OpenXmlDocument"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"562f2d5cdb519e457819970202934271d1de934c41e539a43def6f471fefd63c"}},{"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":"919c9a5fa0910fc3dd9e2e0165ae8bf85970baac95cbe5dee1c9b25b04ebcfc1"},"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":"de530f8dfedb6dd25c45ab0ff9d3f490f81e3c300fcab8ef5f840b129f74c8da"},"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":"8fe5033e830c38bc3eb60991b8547e1fe89e6858301a74c9d6ec40b668415033"},"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":"4a339bda349447d4866a5f4cb479531dcd1da7033f2796dbcd9a538ff0bee98d"},"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":"f49571ca9a6d2bd512dd338cd1b89c4568a2fac6c7cabedd9a1e3b0dc8ac1a80"},"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":"f85f0f10ce1cfe3296db6713c1b084c060f20458595a1bae6f761bbef9168626"},"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":"5030ff3bf23788a679ce65bfed5ccb7b0059a926f9e9d85caf752e51fde2c261"},"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":"576076146f029187067a09965091de9b7e950aa9720b2c475d2f6e0e8b80ea5b"},"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":"60c7b029d6363744e14328cd4920cd1fcbfa330e809cd33241d8a4ef766f9c39"},"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":"e0849a7cd2c8f5ae6df051d275854a2acd6a52f831ebd1dd791bbdb5648a61d5"},"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":"f3b5c8415adbe511ac428e4beebf1abb9af3d42e662ad09ed0574da58bdb2b58"},"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":"60f9ed61e08d00b8b004bf42be0abf1af386335334d5bd4ef3ea7d0b16907d0a"},"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":"864db85e0eb782d1062e4aa4600bf028f6a2d238e6a6e83a322dd4a1ca84e172"},"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":"673116cf6151f90c17901b98e07c8e1a9f68b8593341417d34f584a8f63f1e4a"},"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":"b649bba64ad682b81a5e3259d153fcec06c2f5adacde1760f9fe872f08b4f79b"},"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":"3ac9e814e23bfb1c1ca30addfc5987ac8eec17ff2c55eb9c6359bbcb109d50d5"},"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":"30817c4b1e4bed24d3c6e20d5587099b98158dd720ed322faf6e0c8ba7c8edba"},"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":"8267ae4affbc42f4bdf4faeb2b0448a0b5dd632bdaf352c6348045be8795ac4e"},"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":"0dbd662d93cebd47a87a5757fa657c53a7c4267ee02b055bdde2b9d5b5191f4b"},"taxa":[{"id":"CWE-1333","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/PivotTable/CT_PivotCacheDefinition.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb5377e6ecc92a6c177da4aa3e4f6d771dbe7eafbb212b680b19dec2632e853a"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Sdt.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd0824c310e7397b095cfdd0a06998ee4b7146ffc466697efba57c858fd3eb0"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/OfficeDrawing.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c8d2e8ee68269108d1f0b38207107c5f732b16ae056a3ec3351a062347327d"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/CustomXml.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"833f50bd5555c91243efa4d8ade1e7460624c99845cf6dc54809bc63b1369436"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/HdrFtr.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05d4e66ea415554621828fd5ba33fa72089bca757c5aeb31eda8d0405db7868"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Markup.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"47954c5ee4014323c2600d2c1bfa29262ab77a68cff93b5d4b18a5ee2575da5d"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/ShapeGeometry.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f69e56afe20c9f438658124eb637d63073df8227a16e6ff7780928c2192e659"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFTextParagraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1857f9a34f9904ce801cb2de4d38375499cfb036217b9abbf0aba776a229a90e"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Util/PropertyTemplate.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd088b218da60572c98ddb0fe84bf7c4f18a5be7ff0948e797e148eef9232048"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureConfig.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"13272c1ebb155514e2a81c4300eb905180cfb15977913bbf173b78f00380f15d"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/ExternalConnections.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"00aa1e98ca62f972a3f384140d24913cfe4d304131b9a78901f2a9b523a1d2e6"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/PresetGeometry.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba598e79b344794390402dfd96baff6dd173ab5219bdee4827e02c46b48eb84"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFSimpleShape.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d4fcc1050f9901f9793175a62c9623b4f86705e41d1b11424dce3eb5c4667f"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/Crypt/CryptoFunctions.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29c79ce0083c93ca96db9fd5f55aa4cee31fef964f6636c88dfdcd85ab9a263"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Drawing/Chart/PieChart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a395f4ec64df527b3ca92d5a7bd021fc774afcae77c2e79d37a3383b004a26e"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/SS/Formula/DataValidationEvaluator.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1ad3ccb8bedf5ff65d4d226ee6ff3005ddb7a41a8414be3eee9ea0450a2ac98"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Text/XDDFTextParagraph.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fc28b5d67fd0b4f30396f989703fc350f9e1128974cf9cb433a11eb9174e4be"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Dsig/SignatureInfo.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3c5796687bf5c3bd4f0cf35fbd88a6cc9dd35c7dd6de0366c3295342ea226e1"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/PresetColor.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"df8e4d85bcb36be924e0ef6cb1c7877948f4797f1000ded1b741b2dcacfe4fb9"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Text/XDDFTextRun.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"358fd2d021e668d572933812e0e432e0d4f706af5c4cbd487fc1aa47d2d36d04"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/LocaleUtil.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc7622207b06432fb75b1e224b562dedadfe6f204e5910ede7554385049b8fb"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/Styles/CT_Font.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"868ce0cf50e4fade0f246535a8dd18ab93e45579634e9c04fb76a567dc761858"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XSSF/UserModel/XSSFPivotTable.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7badd94c755cb2804574e28f97f82ff735c0c1dd1ca4a5746c84c19460060cc7"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Vml/SpreadsheetDrawing.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"49abbc29ef067a20d55c90296db07c954948c9c65421e35162112d1e07adb275"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/PackagePartName.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08e5def4741c98ffb9b118e1e5858b87b57c7d9c7394d9e9f162af0dc6b1ca0"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/POIFS/Crypt/Agile/AgileEncryptor.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"21b3b9ba7d31618bc1f03eb9aea975178b80527163563976a43b4d923eed37e8"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Wordprocessing/Frame.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1886dfe0ad71059db416dba198b6b194d78d0dcc3c2b114477788e34ffe4d137"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/Util/Collections/BidirectionalDictionary/BidirectionalDictionary.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"983d71f6d5dbcbd6b709948f1168bdb6f7c450b44ff53cbc84c2f8b24dcc9783"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/QueryTable.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d283a28f7c858a03744ccad511d50bd5c6806e14b6cc3738deddcfe879471f1"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/OPOIFSDocument.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e97a428d35ff0bccd95b853e8d7a90d4660cea0a88aacf74d324b33253d5fb5"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ooxml/XDDF/UserModel/Text/XDDFTextBody.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"776c29af9dc4403f15730044a040b95fe7111c1fccfa41a818be1fca9a1d4d19"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/PackagePropertiesPart.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43804d6f25ca55f8fbcfd5f059a3ec5f9e9fe5176e226e4b36b09fc4c66d717c"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"openxml4Net/OPC/Internal/ContentTypeManager.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"86588196f9a235fd10ad31031bce685f3d5a63b1539a3831e74647253cbd0fb3"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/CFRule12Record.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdabf5cdda450992812c1651b7698211d62d93e944252c6380e409a5e35f5632"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"OpenXmlFormats/Spreadsheet/SharedString/CT_RPrElt.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a75b259301b61f26be9781bd95eb091b11c7b31f096ec6aeeacd3c38e99d2d"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/POIFS/FileSystem/OPOIFSFileSystem.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d6cffda8c62203d13c56031612a358bfddbe7f9bedc24b727c82d9ed3329ba5"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"main/HSSF/Record/CFRuleBase.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd388e382637e2d941e5f7f6dca4f63239a9e859f12f2ce8092c085fb9d9a36b"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 313 smaller file(s) also have no living knowledge \u2014 folded into the freshness score and metrics rather than listed individually (350 orphaned of 1403 analysed files in total, counted over production source files of roughly 100 lines or more, excluding tests, vendored, generated and example/demo trees, largest first)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0752d0df7434000fcabf1048e2de30a7a1a8b982b3db9a19898c4dec199856b4"}}],"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-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":25,"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."]}]}